gpt4 book ai didi

jsf - 如何在

after certain validations are violated 更改时重置输入组件

转载 作者:行者123 更新时间:2023-12-04 16:47:17 27 4
gpt4 key购买 nike

我正在填充 <p:selectOneMenu>当加载 JSF 页面时,来自包含区域列表的数据库。

When a zone in this menu is selected, a set of <p:inputText>显示其中用户可以插入与产品重量相对应的费用,该费用将由运输商转移到菜单中的选定区域。这可以显示在以下 snap shot .

enter image description here

可以看出,当用户输入非数字值时,当给定的保存按钮 <p:commandButton> 时会发生验证冲突。按下(每个文本字段顶部显示的数字对应于重量)。

如果用户现在更改菜单中的区域 - 第一个面板而不按重置按钮,则数据对应于 新选区仅当按下重置按钮时才会在这些文本字段中加载 follows (因为验证违规)..

enter image description here

那么,如果菜单中的项目(区域)发生更改,如何在先前的验证违规后加载数据?
<p:selectOneMenu>的变更事件,在这种情况下,应该执行类似于 <p:resetInput> 所做的功能.

希望你能明白我的意思:)。

最佳答案

基本上,您需要 <p:resetInput> 提供的功能内<p:ajax><p:selectOneMenu> .这确实是不可能的,因为 <p:resetInput>需要放置在实现 ActionSource 的组件中如 UICommand成分。

您最好的选择是让 <p:remoteCommand>接手<p:ajax>更改监听器工作。你可以在里面放一个 <p:resetInput> .

想象一下,您目前有一个:

<h:form>
<p:selectOneMenu id="zone">
<f:selectItems ... />
<p:ajax listener="#{bean.changeZone}" update="data" />
</p:selectOneMenu>

<p:panel id="data">
...
</p:panel>
</h:form>

那么这个改变应该做:
<h:form>
<p:selectOneMenu id="zone" onchange="changeZone()">
<f:selectItems ... />
</p:selectOneMenu>
<p:remoteCommand name="changeZone" process="@this zone" action="#{bean.changeZone}" update="data">
<p:resetInput target="data" />
</p:remoteCommand>

<p:panel id="data">
...
</p:panel>
</h:form>

不要忘记删除 AjaxBehaviorEvent来自监听器方法的参数。无论如何,在这种特殊情况下它是无用的。

关于jsf - 如何在 <p :selectOneMenu> after certain validations are violated 更改时重置输入组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169208/

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