我使用一个可编辑的primefaces selectOneMenu来显示一些值。如果用户从列表中选择了一项,则应更新文本区。但是,如果用户在selectOneMenu中输入了某些内容,则不应更新文本区。
我想我可以用ajax事件解决这个问题。但是,我不知道在这里可以使用哪个事件。我只知道valueChange事件。是否还有其他事件,如onSelect或onKeyUp
下面是我的代码:
<p:selectOneMenu id="betreff" style="width: 470px !important;"
editable="true" value="#{post.aktNachricht.subject}">
<p:ajax event="valueChange" update="msgtext"
listener="#{post.subjectSelectionChanged}" />
<f:selectItems value="#{post.subjectList}" />
</p:selectOneMenu>
<p:inputTextarea style="width:550px;" rows="15" id="msgtext"
value="#{post.aktNachricht.text}" />发布于 2014-02-07 17:21:32
PrimeFaces ajax事件有时文档非常少,因此在大多数情况下,您必须查看源代码并进行检查。
p:selectOneMenu支持更改事件:
<p:selectOneMenu ..>
<p:ajax event="change" update="msgtext"
listener="#{post.subjectSelectionChanged}" />
<!--...-->
</p:selectOneMenu>在签名中以AjaxBehaviorEvent作为参数触发监听器:
public void subjectSelectionChanged(final AjaxBehaviorEvent event) {...}发布于 2018-11-27 23:57:11
我更喜欢使用更方便的itemSelect事件。通过此事件,您可以在侦听器中使用org.primefaces.event.SelectEvent对象。
<p:selectOneMenu ...>
<p:ajax event="itemSelect"
update="messages"
listener="#{beanMB.onItemSelectedListener}"/>
</p:selectOneMenu>使用这样的监听器:
public void onItemSelectedListener(SelectEvent event){
MyItem selectedItem = (MyItem) event.getObject();
//do something with selected value
}发布于 2015-11-30 23:25:02
请注意,在selectOneMenu组件运行之前,页面不包含任何"required“属性为"true”的空组件。
如果使用像这样的组件
<p:inputText label="Nm:" id="id_name" value="#{ myHelper.name}" required="true"/>然后,
<p:selectOneMenu .....></p:selectOneMenu>并且忘记填写所需的组件,selectoneMenu的ajax listener无法执行。
https://stackoverflow.com/questions/16587585
复制相似问题