【发布时间】:2011-05-11 15:54:51
【问题描述】:
我有一个场景,我必须让用户选择应用程序及其相关配置文件。用户应至少选择一个应用程序和一个配置文件,并且他还可以选择多个。每个应用程序都有自己的配置文件,并且可以有多个应用程序。我的 UserBean 有一个 ApplicationVO 列表,而 ApplicationVO 有 isSelected(布尔值)、应用程序 ID(整数)、应用程序名称(字符串)和配置文件列表。该 Profile 列表具有 ProfileVO 列表,而 ProfileVO 具有 isSelected(boolean)、profile id(int) 和 Profile name(String)。
我是 JSF 的新手,我尝试使用数据表和 SelectBooleanCheckBox 效果很好。但此时我不确定如何验证并在同一个 JSP 中显示错误消息,而其余用户输入的数据完好无损。此外,我不确定如何使用用户选中/取消选中的选项来更新 bean。
当用户点击提交时,我的验证应该是:
- 至少应选择一个应用程序
- 如果选择了应用程序,则应至少选择一个配置文件
- 在选择应用程序之前,应禁用配置文件复选框
- 当用户取消选中应用程序复选框时,应禁用配置文件复选框。
我有以下代码。请帮助我,如果有其他最好的方法来完成同样的事情,也可以建议我。
<h:dataTable value="#{UserBean.applicationList}" var="appList">
<h:column>
<f:facet name="header">
<h:outputText value="Applications" />
</f:facet>
<h:selectBooleanCheckbox value="#{appList.isSelected}" label="#{appList.applicationName}"/>
<h:outputText value="#{appList.applicationName}" />
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Profiles" />
</f:facet>
<h:dataTable value="#{appList.profileList}" var="profileList">
<h:column>
<h:selectBooleanCheckbox value="#{profileList.isSelected}" />
<h:outputText value="#{profileList.profileName}" />
</h:column>
</h:dataTable>
</h:column>
</h:dataTable>
【问题讨论】:
-
我真的很坚持这一点。如果有人可以帮助我,我将不胜感激。谢谢
-
@Solomon:欢迎来到 StackOverflow! 嗯,您似乎想说
#{profileList.selected}(没有is)。稍后我会仔细看看。 -
由于 ProfileVO 具有名为“isSelected”的属性,因此我在正在运行的 JSP 中给出了相同的名称。我被困在验证以及如何将选定的用户输入传回 bean 上。我选择了复选框,因为它在 UI 中看起来不错,但如果我不能使用该控件来满足我的要求,我愿意接受其他控件和设计。
-
我不知道继续进行。我真的需要一些帮助。感谢您的帮助
标签: jsf