![](/img/trans.png)
[英]data in the row is being cleared when commandLink is clicked using jsf-2.0 and ajax
[英]JSF 2.0, malformedXML when using ajax on a commandlink
我試圖通過commandlink在ajax請求后顯示表單中的字段。但是,當我單擊鏈接時,我收到malformedXML錯誤。 xhtml文件如下所示:
<h:form>
.
.
<tr>
<td>Product Image*:</td>
<td>
<h:graphicImage url="#{addItem.prodFileName}" width="100" height="100"/>
<br /><h:commandLink value="change image" >
<f:ajax event="click" render="uploadimage" execute="@this" listener="#{addItem.ChangeImage}"/>
</h:commandLink>
</td>
</tr>
<tr >
<td>
<t:inputFileUpload rendered ="#{addItem.editImgChange}" label="editImage" id="uploadimage" value="#{addItem.uploadedFile}" />
<h:messages for="prodimage"/>
</td>
</tr>
.
.
</h:form>
AddItem bean是RequestScoped,它有以下代碼行:
@ManagedBean
public class AddItem extends AbstractBean {
//..
boolean editImgChange=false;
//...
public void ChangeImage(){
this.editImgChange=true;
}
}
Inshort,我想只在用戶點擊更改圖像鏈接后顯示t:inputFileUpload字段。 我在AddItem bean中保留了一個標志editImgChange,其初始值為false,一旦用戶單擊更改圖像鏈接,該標志就會更改為true。 該程序轉到ChangeImage()方法,但之后我得到錯誤
“malformedXML:更新期間:找不到j_idt30:uploadimage”
。
我也會對一個完全不同的解決方案感到高興,為了達到同樣的效果,我的設計很糟糕。
render
屬性應指向始終呈現在HTML中的組件的ID。 它就是JavaScript,它應該根據ajax響應更新/替換它的內容。 但是,如果組件永遠不會呈現為HTML,那么JavaScript將無法更新/替換其內容。 您需要將其包裝在另一個始終呈現為HTML的組件中,然后更新它。
例如
<h:panelGroup id="uploadimage">
<t:inputFileUpload rendered ="#{addItem.editImgChange}" label="editImage" value="#{addItem.uploadedFile}" />
</h:panelGroup>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.