gpt4 book ai didi

jsf-2 - JSF 2 : Cannot choose default entry in dropdown element when dropdown is required and default entry is null

转载 作者:行者123 更新时间:2023-12-04 05:23:51 25 4
gpt4 key购买 nike

我有以下 JSF 2 代码:

    <p:selectOneMenu id="dropdown" value="#{data.selection}" required="true" converter="selectOneMenuConverter">
<f:selectItem itemLabel="Select one..." itemValue="" noSelectionOption="true" />
<f:selectItems value="#{data.entries}" var="entry" itemLabel="#{entry.name}" itemValue="#{entry}" />
<p:ajax update="display" event="change" />
</p:selectOneMenu>

<h:panelGroup id="display">
<h:outputText value="#{data.selection}" />
</h:panelGroup>

当我从下拉列表中选择一个值时,一切都按预期工作。
当用户通过选择“Select One”来“取消选择”一个条目时,JSF 会提示这是不可能的,因为需要 selectonemenu。

问题来自 p:ajax 进行触发验证的部分提交。 Immediate=true 也不起作用,因为如果立即发生在输入字段上(如 selectonemenu 是),则会执行验证。
验证仅在用户按下页面底部的“继续”按钮时发生(未在代码中显示)

此外,给定的转换器将字符串转换为对象,对于默认值,它返回 null(这也是域内“无选择”的预期值)。

所以我的问题是我必须做些什么来完成我的案子。
对于我来说,这是一个标准案例,我无法想象没有解决方案。

有什么想法吗?

最好的问候,
弗洛里安

最佳答案

The validation shall only happen when the user presses the "go on" button on the bottom of the page (not shown in code)



然后告诉下拉菜单的 required属性来做到这一点,而不是硬编码 true .
<h:form id="form">
<p:selectOneMenu ... required="#{not empty param['form:go']}">
...
</p:selectOneMenu>

...

<p:commandButton id="go" ... />
</h:form>
#{not empty param['form:go']}只会评估 true当表单提交实际上由具有客户端 ID form:go 的提交按钮进行时在特定的例子中。如果您也不喜欢硬编码客户端 ID,请按如下方式引用它:
<h:form>
<p:selectOneMenu ... required="#{not empty param[go.clientId]}">
...
</p:selectOneMenu>

...

<p:commandButton binding="#{go}" ... />
</h:form>

关于jsf-2 - JSF 2 : Cannot choose default entry in dropdown element when dropdown is required and default entry is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com