簡體   English   中英

在命令鏈接上使用ajax時,JSF 2.0,malformedXML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM