コマンドリンクを介したajaxリクエストの後にフォームにフィールドを表示しようとしていますが、リンクをクリックすると不正な形式のXMLエラーが発生します。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;
}
}
つまり、ユーザーが画像の変更リンクをクリックした後にのみ、t:inputFileUploadフィールドを表示したいと思います。初期値がfalseのsegmentBeanにフラグeditImgChangeを保持しており、ユーザーが画像の変更リンクをクリックすると、フラグがtrueに変更されます。プログラムはChangeImage()メソッドに移動しますが、その後エラーが発生します
"malformedXML:During update:j_idt30:uploadimage not found"
。
私のデザインが悪い場合に備えて、同じ結果を達成するために、まったく異なるソリューションにも満足しています。