我不知道为什么你认为你需要的额外支持bean代码。你已经拥有了支持bean中所有需要的值。你的问题更多的是呈现这些价值观。只需相应地编写视图代码,以所需的格式显示它们即可。也许你认为这太难了。
而不是选择布尔值复选框,您可以显示例如“是”或“否”值。
<h:selectBooleanCheckbox value="#{bean.checked}" rendered="#{bean.edit}" />
<h:outputText value="#{bean.checked ? 'Yes' : 'No'}" rendered="#{not bean.edit}" />
而不是选择一个菜单/收音机,您可以只显示输出文本中的值。
<h:selectOneMenu value="#{bean.selectedItem}" rendered="#{bean.edit}">
<f:selectItems value="#{data.availableItems}" />
</h:selectOneMenu>
<h:outputText value="#{bean.selectedItem}" rendered="#{not bean.edit}" />
而不是选择多个列表框/复选框,您可以只显示例如在循环中分隔的所有值逗号。
<h:selectManyListbox value="#{bean.selectedItems}" rendered="#{bean.edit}">
<f:selectItems value="#{data.availableItems}" />
</h:selectManyListbox>
<h:panelGroup rendered="#{not bean.edit}">
<ui:repeat value="#{bean.selectedItems}" var="selectedItem" varStatus="loop">
#{selectedItem}#{not loop.last ? ', ' : ''}
</ui:repeat>
</h:panelGroup>
你可以把它包装都在一个标签文件或复合材料,以尽量减少样板和代码重复。
当控件的标签不等于它的值时,它并不那么简单。 – Sudhir 2012-01-09 04:08:45
例如,对于选择布尔值复选框,显示给用户的值为'男'和'女'。在选择时,'M'或'F'将根据用户的选择存储在数据库中。在这种情况下,在查看模式下,要显示“男性”或“女性”,必须编写额外的支持bean代码以将数据库值转换为用户可呈现文本。其他控制也是一样。对于上述方法的工作,控制的标签必须等于价值,这在大多数情况下不会。请让我知道如果我失去了一些东西。 – Sudhir 2012-01-09 04:09:08
你已经在''背后的数据中存在这些值。只需访问并相应地打印它们。将来你可以直接问一个问题,就像你在评论中所做的那样。 –
BalusC
2012-01-09 11:37:36