在带有Primefaces的xhtml页面中,我想显示带有FontAwesome图标的勾号图标(fa-check)。由于icon属性可以添加到例如primefaces按钮或primefaces commandButton,我使用带有icon属性的commandButton。 我的问题是,如果我使用f:ajax render从另一个元素引用它,则会出现错误:
malformedXML:在更新formId期间:找不到tickIcon
我知道已经存在这类问题,但我没有解决问题。
以下是我的xhtml页面的相关部分:
<h:form id="formId" enctype="multipart/form-data">
<p:wizard>
<p:tab id="tab1">
...
</p:tab>
<p:tab id="tab2">
<p:panel>
<p:panelGrid styleClass="ui-panelgrid-blank">
<p:row>
<p:column colspan="2">
<p:outputLabel id="wrapperLabel" value="Select a file"
styleClass="wrapperLabel">
<h:inputFile id="fileUpload" styleClass="fileUploadButton"
value="#{bean.file}" required="true">
<f:ajax listener="#{bean.tempUpload()}"
render="showFileName createButton tickIcon" />
</h:inputFile>
</p:outputLabel>
</p:column>
<p:column colspan="1">
<p:outputLabel value="Filename: " />
</p:column>
<p:column colspan="5">
<p:inputText id="showFileName"
value="#{bean.fileName}" readonly="true" />
</p:column>
<p:column colspan="1">
<p:commandButton id="tickIcon" icon="fa fa-check"
disabled="true" styleClass="tickIcon"
rendered="#{bean.validFile}" />
</p:column>
</p:row>
</p:panelGrid>
</p:panel>
</p:tab>
</p:wizard>
</h:form>
更具体的是h:inputFile有一个f:ajax,当文件上传完成后,它会刷新inputText字段和2个commandButtons的渲染。 validFile是一个布尔变量,在文件上传后它是真的。但是通过带有图标的commandButton,更新不起作用,而另外2个则起作用。
如果有人有更好的想法显示Fontawesome图标,那也很受欢迎。
更新
它几乎&#34;如果我用这样的方式引用commandButton就可以工作:: tickIcon,所以通过ajax组件我写这个:
<f:ajax listener="#{bean.tempUpload()}"
render="showFileName createButton :tickIcon" />
几乎,因为只有当我回到向导中的上一个选项卡然后返回时,它才有效。这些组件最初没有更新。
更新2:
现在可以使用了,我用这种方式更改了代码:
<f:ajax listener="#{bean.tempUpload()}"
render="@form" />
所以整个表格都会更新。
答案 0 :(得分:0)
如果我理解正确你只需要给列一个id,并更新它而不是按钮。问题是您无法更新DOM中不存在的组件(通过javascript发生)。
正常&#34;技巧&#34;是将组件放在p:column
并更新,但在您的情况下,我认为您也可以更新{{1}}。