如何在valueChangeListener方法中获取更新的模型值?

Sum*_*man 9 jsf valuechangelistener

我在valueChangeListener上遇到了问题.我在Weblogic 6.0上使用JSF 1.2.

我有一个页面,页面顶部有2个单选按钮,名称为Name1和Name2.单击Name1时,单选按钮下方将显示Name1详细信息(大约30个字段),单击Name2时,将显示Name2详细信息.现在,用户可以更新单击的命名详细信息.例如,用户单击Name1并更改地址字段,然后单击Name2并更改Name2的年龄.当用户单击Name1时,地址应显示为使用新值更新,并且当用户单击Name2时,应再次更新年龄.

我使用valueChangeListener来解决它,因为我需要更改事件的旧值和新值.问题是,当在VALIDATION阶段结束时调用valueChangeListener时,我没有在valueChangeListener方法中获取Name1字段的更新地址.有人可以帮我解决问题吗?

Bal*_*usC 18

因为在VALIDATION阶段结束时调用valueChangeListener,我没有在valueChangeListener方法中获取Name1字段的更新地址

将事件排队到INVOKE_ACTION阶段,以便它像动作(侦听器)方法一样.

public void valueChangeListenerMethod(ValueChangeEvent event) {
    if (event.getPhaseId() != PhaseId.INVOKE_APPLICATION) {
        event.setPhaseId(PhaseId.INVOKE_APPLICATION);
        event.queue();
        return;
    }

    // Do your original job here. 
    // It will only be entered when current phase ID is INVOKE_APPLICATION.
}
Run Code Online (Sandbox Code Playgroud)

随着INVOKE_ACTION阶段之后UPDATE_MODEL_VALUES的运行,更新的模型值将"通常的方式"可用.

  • 非常感谢 BalusC。有用。每当我遇到一些 JSF 问题时,我总是在 stackoverflow 中寻找您的建议,我发现您的答案非常简单明了。再次感谢。 (2认同)