当我使用immediate = true执行ajax操作时,如何保留文本框值?我需要渲染整个表单。我想在执行ajax操作时跳过验证并更新模型阶段。我已经尝试在ajax操作调用的方法的末尾使用FacesContext.getCurrentInstance()。renderResponse()但它不起作用。旧值出现在文本框中,或者某些数据在某些文本框中被清除。我还不想更新支持bean。
我想要做的是保留用户填写文本框的信息。我使用的Ajax按钮动态添加更多文本框,我在ajax按钮中设置渲染属性来渲染整个页面(我需要做一个完整的渲染)。在我使用ajax动作调用的方法中,我有“FacesContext.getCurrentInstance()。renderResponse();”
按钮代码为:
<h:commandButton id="btnAdd" value="Add" type="button">
<f:ajax event="click" execute="@form" render=":form" listener="#{ManagedBean.add()}"/>
</h:commandButton>
听众的行动是:
public void add() {
Person p = new Person();
ManagedBean.getPeople().add(p);
FacesContext.getCurrentInstance().renderResponse();
}
我有一个ui:重复迭代“people”列表,文本框的代码是:
<ui:repeat value="#{ManagedBean.people}" var="currentPerson" varStatus="i">
<h:inputText id="p" readonly="false" label="Person" value="#{currentPerson.name}" >
</h:inputText>
</ui:repeat>
我正在重新调整JSF阶段,我得到了:
[2/7/12 15:06:33:584 CST] 0000002f SystemOut O START PHASE RESTORE_VIEW 1
[2/7/12 15:06:34:375 CST] 0000002f SystemOut O END PHASE RESTORE_VIEW 1
[2/7/12 15:06:34:981 CST] 0000002f SystemOut O START PHASE APPLY_REQUEST_VALUES 2
[2/7/12 15:06:35:553 CST] 0000002f SystemOut O END PHASE APPLY_REQUEST_VALUES 2
[2/7/12 15:06:36:089 CST] 0000002f SystemOut O START PHASE RENDER_RESPONSE 6
[2/7/12 15:06:44:364 CST] 0000002f SystemOut O END PHASE RENDER_RESPONSE 6
有没有办法从文本框中提取数据并在ajax调用后再次将它们设置到视图中?感谢。
答案 0 :(得分:0)
你可以为人们使用包装类。然后你可以让JSF调用setter并且不会触及原始的person对象。
MAG, Milo van der Zee