繁体   English   中英

在使用JSF 2.0进行RenderResponse调用的Ajax请求之后,保留文本框数据

[英]preserve textbox data after an Ajax request with RenderResponse call with JSF 2.0

当我执行带有Instant = true的Ajax操作时,如何保留文本框值? 我需要渲染整个表格。 当执行ajax操作时,我想跳过验证并更新模型阶段。 我已经尝试过由ajax动作调用的方法的末尾使用FacesContext.getCurrentInstance()。renderResponse(),但是它不起作用。 旧值会出现在文本框中,或者某些数据会在某些文本框中被清除。 我还不想更新支持bean。

我要做的是将用户填写的信息保留在文本框中。 我使用的Ajax按钮会动态添加更多文本框,并且我在ajax按钮中设置了render属性,以渲染整个页面(我需要做一个完整的渲染)。 在用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:repeat可以在“人员”列表中进行迭代,文本框的代码为:

<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之后从文本框中提取数据并在视图中再次将其设置为它们? 谢谢。

您可以将包装类用于人群。 然后,您可以让JSF调用设置器,而原始人员对象将不会受到影响。

MAG,米洛·范德泽

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM