Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何在action listener中更新EditableValueHolder的值?_Jsf_Jsf 2 - Fatal编程技术网

Jsf 如何在action listener中更新EditableValueHolder的值?

Jsf 如何在action listener中更新EditableValueHolder的值?,jsf,jsf-2,Jsf,Jsf 2,我有一个JSF(JavaEE7,由GlassFish 4.1+PrimeFaces 5.1提供)表单,其中包含数据库连接信息,如主机名、端口号等。该表单的一部分是URL字段。我希望此字段可编辑,但我也希望能够基于其他字段设置值 为此,我创建了一个带有操作侦听器的按钮,从中读取发布的数据并生成新的URL值。然后我想在URL字段中输入新值,并使用该值而不是发布的数据。我尝试的是将组件获取为,并设置提交的值和。我还尝试设置组件的值并调用 最好的结果是在两次单击后更新URL字段 XHTML: <p

我有一个JSF(JavaEE7,由GlassFish 4.1+PrimeFaces 5.1提供)表单,其中包含数据库连接信息,如主机名、端口号等。该表单的一部分是URL字段。我希望此字段可编辑,但我也希望能够基于其他字段设置值

为此,我创建了一个带有操作侦听器的按钮,从中读取发布的数据并生成新的URL值。然后我想在URL字段中输入新值,并使用该值而不是发布的数据。我尝试的是将组件获取为,并设置提交的值和。我还尝试设置组件的值并调用

最好的结果是在两次单击后更新URL字段

XHTML:

<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=“…”
或PrimeFaces
process=“…”
来执行/处理一组特定的输入/按钮

<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;
}