以下是我的代码:
<c:forEach items="#{myBean.contractList}" var="contract">
<tr>
<td>#{contract.title}</td>
<td>#{contract.terms}</td>
<td>
<h:form>
<h:commandLink>
<p:ajax event="click" update=":panelID" listener="#{bean.selectProject(contractID)}"/>
</h:commandLink>
</h:form>
</td>
</tr>
</c:forEach>
<h:panelGroup id="panelID">
<div id="contractDIV" class="closePopup">
Full Details of particular contract
</div>
</h:panelGroup>
有合同清单,标题,条款,名称和“链接/按钮”。当我单击该链接/按钮时,该特定合同详细信息在另一个div中打开,其中ID为“contractDIV”,数据库和css类名称从“openPopup”更改为“closePopup”。它在JSF中的可能性如何?
答案 0 :(得分:1)
首先,该链接/按钮必须是JSF组件。其次,该div也应该是JSF组件。从那以后,它非常直接。
<强>更新强>
将event="click"
更改为event="action"
,并使用类似的内容来控制将哪个类应用于div class="#{bean.someBoolean ? 'closePopup' : 'openPopup'}"
。您可以在#{bean.someBoolean}
方法
#{bean.selectProject()}
值
答案 1 :(得分:0)
而不是div有outputpanel 考虑为outputpanel生成的Id是 form:refreshPanel
<h:form id="form">
<c:forEach items="#{myBean.contractList}" var="contract">
<tr>
<td>#{contract.title}</td>
<td>#{contract.terms}</td>
<td><p:commandLink actionListener="#{bean.method(contract)}" update=":form:refreshPanel" /></td>
</tr>
</c:forEach>
<p:outputPanel styleClass="closePopup" id="form:refreshPanel"> </p:outputPanel>
</h:form>
因此,一旦完成actionListener的处理,内容将被刷新
答案 2 :(得分:0)
您可以使用javascript更改oncomplete
的{{1}}中的课程。
类似的东西:
p:ajax