在进行JSF Ajax调用时,将变量设置为null

时间:2016-05-17 14:51:12

标签: ajax jsf-2.2

我有一个<StackPanel Name="stackTextPanel" Orientation="Horizontal"> <StackPanel.Style> <Style TargetType="{x:Type StackPanel}"> <!-- Gotta be inside the Style, not outside. --> <Setter Property="Margin" Value="0,8,0,0" /> <Style.Triggers> <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False"> <Setter Property="Margin" Value="0,8,0,0" /> </DataTrigger> <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="True"> <Setter Property="Margin" Value="0,48,0,0" /> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> </StackPanel> wordController CDI bean。它有一个方法@ViewScoped,可以将变量addWord()添加到currentWord。它在没有AJAX的情况下工作正常,但只要我包含List,变量f:ajaxcurrentWord方法中始终为空。在ajax与JSF一起工作的方式上有一些我缺少的东西。这里出了什么问题?

addWord()

1 个答案:

答案 0 :(得分:5)

f:ajax默认为execute="@this"(在这种情况下等于commandButton),因此不执行inputText(≈已提交)。这就是为什么它在行动中为空。只需添加

<f:ajax execute="@form" render="wordlist" /> 

执行整个表单,或

<f:ajax execute="@this words" render="wordlist" /> 

只执行inputText和按钮 - 如果有更多输入组件你不想提交。

在后一种情况下,您需要@this,因为没有words只会执行commandButton,因此不会执行{{1}},因此不会执行操作。

Here更多阅读。