我想通过我的页面访问变量。 var在ui:repeat元素中声明。听说变量的范围只在repeat标签内。我想在同一页面上加载另一个需要此var内部细节的div。我怎样才能做到这一点。
<ui:repeat var="errorDetails"
value="#{adminDashboardController.errorDetails}" varStatus="status">
<tr>
<td>#{errorDetails.issueName}</td>
<td>#{errorDetails.priority}</td>
<td>#{errorDetails.comments}</td>
<td><h:commandButton class="btn btn-primary btn-xs view-issue"
value="View" /></td>
</tr>
</ui:repeat>
<h4 class="modal-title" id="myModalLabel">#{errorDetails.issueName}</h4>
答案 0 :(得分:0)
errorDetails
变量仅在ui:repeat
的范围内可用。
您有两种选择:
HTML / JS解决方案:为表格的每一行生成包含一个<h4...>#{errorDetails.issueName}</h4>
的HTML代码,并在按下命令按钮时使用JavaScript显示正确的块。
我认为此选项应仅用于性能原因,因为您将生成大量HTML,因为作为JSF开发人员,您通常更愿意避免使用JavaScript编写自定义内容。
JSF解决方案(我的首选):使用支持bean来保存当前查看的错误详细信息。这将是这样的:
<ui:repeat var="errorDetails" value="#{adminDashboardController.errorDetails}" varStatus="status">
...
<h:commandButton ... action="#{adminDashboardController.showDetails(errorDetails)" update="myModalLabel" />
...
</ui:repeat>
...
<h:panelGroup rendered="#{adminDashboardController.currentDetail != null}">
<h4 class="modal-title" id="myModalLabel">#{adminDashboardController.currentDetail.issueName}</h4>
</h:panelGroup>
AdminDashboardController.showDetails
方法会在字段currentDetail
中保存给定的错误详细信息。