进行 JSF Ajax 调用时变量设置为 null
Variable is set to null when JSF Ajax call is made
我有一个 @ViewScoped
wordController CDI bean。它有一个方法 addWord()
可以将变量 currentWord
添加到 List
。它在没有 AJAX 的情况下工作正常,但是一旦我包含 f:ajax
,变量 currentWord
在 addWord()
方法中始终为 null。在 ajax 使用 JSF 的过程中,我遗漏了一些东西。这里出了什么问题?
<h:form id="saveForm" styleClass="form">
<h:inputText value="#{wordController.currentWord}" id="words" />
<h:commandButton action="#{wordController.addWord()}" type="submit" value="+">
<f:ajax render="wordlist" />
</h:commandButton>
<h:panelGroup id="wordlist">
....
f:ajax
默认为 execute="@this"
(在本例中等于 commandButton
),因此不执行 inputText(≈ 提交)。这就是为什么它在操作中为 null 的原因。只需添加
<f:ajax execute="@form" render="wordlist" />
执行整个表格,或
<f:ajax execute="@this words" render="wordlist" />
仅执行 inputText 和按钮 - 以防有更多您不想提交的输入组件。
在后一种情况下,您需要 @this
,因为没有它,只有 words
会执行,因此不会执行 commandButton
,因此不会执行操作。
Here阅读更多
我有一个 @ViewScoped
wordController CDI bean。它有一个方法 addWord()
可以将变量 currentWord
添加到 List
。它在没有 AJAX 的情况下工作正常,但是一旦我包含 f:ajax
,变量 currentWord
在 addWord()
方法中始终为 null。在 ajax 使用 JSF 的过程中,我遗漏了一些东西。这里出了什么问题?
<h:form id="saveForm" styleClass="form">
<h:inputText value="#{wordController.currentWord}" id="words" />
<h:commandButton action="#{wordController.addWord()}" type="submit" value="+">
<f:ajax render="wordlist" />
</h:commandButton>
<h:panelGroup id="wordlist">
....
f:ajax
默认为 execute="@this"
(在本例中等于 commandButton
),因此不执行 inputText(≈ 提交)。这就是为什么它在操作中为 null 的原因。只需添加
<f:ajax execute="@form" render="wordlist" />
执行整个表格,或
<f:ajax execute="@this words" render="wordlist" />
仅执行 inputText 和按钮 - 以防有更多您不想提交的输入组件。
在后一种情况下,您需要 @this
,因为没有它,只有 words
会执行,因此不会执行 commandButton
,因此不会执行操作。
Here阅读更多