【发布时间】:2012-12-31 13:23:15
【问题描述】:
我想出了一个奇怪的问题。我试图隔离问题,所以以下是我的简化代码。
public class MyBean {
private List<Data> dataList;
Data selectedData;
public MyBean() {
dataList = new ArrayList<Data>();
dataList.add(new Data("John", 16));
dataList.add(new Data("William", 25));
}
public List<Data> getDataList() {
return dataList;
}
public void edit(Data data) {
selectedData = data;
}
public void newData() {
selectedData = new Data(null, null);
}
public Data getSelectedData() {
return selectedData;
}
public class Data {
String name;
Integer age;
Data(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
}
xhtml:
<rich:modalPanel id="pop">
<h:form>
Name: <h:inputText value="#{myBean.selectedData.name}" required="true" id="txtName"/><br/>
Age : <h:inputText value="#{myBean.selectedData.age}" required="true" id="txtAge"/>
<a4j:commandButton value="Save"/>
<a4j:commandButton value="Close" onclick="Richfaces.hideModalPanel('pop');return false;"/>
<br/>
<rich:message for="txtName"/><br/>
<rich:message for="txtAge"/>
</h:form>
</rich:modalPanel>
<h:form>
<rich:dataTable value="#{myBean.dataList}" var="data">
<rich:column>#{data.name}</rich:column>
<rich:column>
<a4j:commandLink value="Edit" action="#{myBean.edit(data)}" reRender="pop" oncomplete="Richfaces.showModalPanel('pop')"/>
</rich:column>
</rich:dataTable>
<a4j:commandButton value="New" action="#{myBean.newData()}" reRender="pop" oncomplete="Richfaces.showModalPanel('pop')"/>
</h:form>
这是错误的路径:
- 加载页面
- 点击第一行的“编辑”链接(弹出显示)
- 在弹出窗口中,清除“年龄”字段并单击“保存”。(显示必填信息)
- 点击取消(不填写“年龄”字段)
- 点击第二个链接。
- 现在它显示不相关的数据(以前的数据)。 - 这就是问题
- 即使我单击“新建”按钮,它也会显示不正确的数据。
仅当弹出窗口中的验证失败时才会发生这种情况。
有解决办法吗?
【问题讨论】:
-
我知道这不会帮助您理解问题,但是您不应该相信控制器(服务器端)可以清除视图(JSF 页面)中的值使用纯 Javascript 完成(仅适用于 New
<a4j:commandButton>)。 -
感谢您对使用 javascript 的建议。我会试试看,一有时间就会通知你。
-
@LuiggiMendoza:我使用了 javascript 并取得了一些成功。但我的真实情况有点复杂,我无法在当前真实情况中使用javascript。但是,非常感谢您的提示,我希望添加 javascript 解决方法作为这个问题的答案,供其他人在有时间时使用。 :)
标签: jsf popup richfaces jsf-1.2 ajax4jsf