Jsf 如何在action listener中更新EditableValueHolder的值?
我有一个JSF(JavaEE7,由GlassFish 4.1+PrimeFaces 5.1提供)表单,其中包含数据库连接信息,如主机名、端口号等。该表单的一部分是URL字段。我希望此字段可编辑,但我也希望能够基于其他字段设置值 为此,我创建了一个带有操作侦听器的按钮,从中读取发布的数据并生成新的URL值。然后我想在URL字段中输入新值,并使用该值而不是发布的数据。我尝试的是将组件获取为,并设置提交的值和。我还尝试设置组件的值并调用 最好的结果是在两次单击后更新URL字段 XHTML:Jsf 如何在action listener中更新EditableValueHolder的值?,jsf,jsf-2,Jsf,Jsf 2,我有一个JSF(JavaEE7,由GlassFish 4.1+PrimeFaces 5.1提供)表单,其中包含数据库连接信息,如主机名、端口号等。该表单的一部分是URL字段。我希望此字段可编辑,但我也希望能够基于其他字段设置值 为此,我创建了一个带有操作侦听器的按钮,从中读取发布的数据并生成新的URL值。然后我想在URL字段中输入新值,并使用该值而不是发布的数据。我尝试的是将组件获取为,并设置提交的值和。我还尝试设置组件的值并调用 最好的结果是在两次单击后更新URL字段 XHTML: <p
<p:inputText id="url"
size="50"
value="#{database.url}"/>
<p:commandButton icon="ui-icon-arrowrefresh-1-w"
immediate="true"
actionListener="#{database.createConnectionURL('namingContainer')}">
<p:ajax update="url" />
</p:commandButton>
immediate=“true”
是JSF 1.x的遗留版本,当时无法只处理一组特定的输入和/或按钮。然后,它经常被滥用,只处理一组特定的输入和/或按钮,而不处理。当您手头有JSF2 ajax时,最好不要使用它
在JSF2 ajax中,您只需使用execute=“…”
或PrimeFacesprocess=“…”
来执行/处理一组特定的输入/按钮
<p:inputText id="url"
size="50"
value="#{database.url}" />
<p:commandButton icon="ui-icon-arrowrefresh-1-w"
process="@this"
action="#{database.createConnectionURL('namingContainer')}"
update="url" />
请注意,我将
移回
中。也许你和
混在一起了
另见:
与具体问题无关要处理具有全方位的组件,最好使用实用程序类。好吧,这非常简单:-)。事实上,在JSF1.x中,这是一种痛苦。再次感谢!
<p:inputText id="url"
size="50"
value="#{database.url}" />
<p:commandButton icon="ui-icon-arrowrefresh-1-w"
process="@this"
action="#{database.createConnectionURL('namingContainer')}"
update="url" />
public void createConnectionURL(String namingContainer) {
// ...
url = urlValue;
}