User interface JSF2.0标识整个表单中更改的值
我正在从事JSF2.0项目,在这个项目中,屏幕上有60个带有预填充值的字段。 用户可以在屏幕上编辑任意数量的字段,当他单击“保存”按钮时,我必须在下一个屏幕上显示用户编辑的字段以及新旧值 最好的方法是什么。 屏幕应该是这样的User interface JSF2.0标识整个表单中更改的值,user-interface,jsf-2,User Interface,Jsf 2,我正在从事JSF2.0项目,在这个项目中,屏幕上有60个带有预填充值的字段。 用户可以在屏幕上编辑任意数量的字段,当他单击“保存”按钮时,我必须在下一个屏幕上显示用户编辑的字段以及新旧值 最好的方法是什么。 屏幕应该是这样的 FieldName Old Value New Value 谢谢你的帮助 谢谢。让我们假设您的预填充值已从某个对象(称为someObject,是SomeBean的字段)中的数据库中提取,并显示为 从数据库填充someObject后,可以创建另一个(复
FieldName Old Value New Value
谢谢你的帮助
谢谢。让我们假设您的预填充值已从某个对象(称为someObject,是SomeBean的字段)中的数据库中提取,并显示为
从数据库填充someObject后,可以创建另一个(复制)对象:oldSomeObject,将someObject的字段值复制到该对象。提交包含60个值的表单后,在新页面上,您可以从SomeBean调用方法:
public ArrayList<EditedField> getEditedFields(){
ArrayList<EditedField> editedFields = new ArrayList<EditedField>();
for(int i=0; i<oldSomeObject.getFieldValues().size(); i++){
if(!someObject.getFieldValues().contains(oldSomeObject.getFieldValues().get(i))){
editedFields.add(new EditedField(oldSomeObject.getFieldNames.get(i), oldSomeObject.getFieldValues().get(i), someObject.getFieldValues().get(i)));
}
}
return editedFields;
}
在表中显示已编辑字段的页面应如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<h:dataTable value="#{someBean.editedFields}" var="field">
<h:column>
<f:facet name="header">
<h:outputText value="Field Name"></h:outputText>
</f:facet>
<h:outputText value="#{field.fieldName}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Old Value"></h:outputText>
</f:facet>
<h:outputText value="#{field.oldValue}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="New Value"></h:outputText>
</f:facet>
<h:outputText value="#{field.newValue}"></h:outputText>
</h:column>
</h:body>
</html>
我希望这会有帮助。你试过什么吗?如果是,则发布该代码。@Satyam Koyani我尝试使用BeanUtils遍历所有字段,并将DB中的旧值与用户输入的新值进行比较。谢谢,我将尝试此操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<h:dataTable value="#{someBean.editedFields}" var="field">
<h:column>
<f:facet name="header">
<h:outputText value="Field Name"></h:outputText>
</f:facet>
<h:outputText value="#{field.fieldName}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Old Value"></h:outputText>
</f:facet>
<h:outputText value="#{field.oldValue}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="New Value"></h:outputText>
</f:facet>
<h:outputText value="#{field.newValue}"></h:outputText>
</h:column>
</h:body>
</html>