问题是在我从DB获取之前的值并且覆盖它们之后cacth新值,我想在我的bean“变量”中保存新值并且还显示来自此组件中de DB的值,但是如果我放“Usuario.nombre”,它不显示数据库中的值,如果我输入“datos.nombres”它显示数据库中的值,请帮助
这是我的xhtml文件
<p:dataTable style="width:450px" value="#{DAOUsuario.Listar()}" var="datos">
<p:column headerText="Datos Personales" style="background:#19708F ; color: white">
<p:outputLabel value="Nombre"/>
<h:inputText value="#{datos.nombre}"/>
<br/>
<p:outputLabel value="Clave" />
<h:inputText value="#{datos.clave}"/>
<br/>
<h:commandButton value="Modificar" action="#{DAOUsuario.Modificar()}">
</h:commandButton>
</p:column>
</p:dataTable>
</h:form>
</body>
这是我的Class,它有连接到DB的方法
public void Modificar() throws Exception {
FacesContext context = FacesContext.getCurrentInstance();
Usuario us = (Usuario) context.getApplication().evaluateExpressionGet(context, "#{Usuario}", Usuario.class);
String sql = "UPDATE usuario SET nombre = '" + us.getNombre() + "', clave = '" + us.getClave() + "' "
+ "WHERE codigousuario = 2";
try {
this.Insert(sql);
} catch (Exception ex) {
throw ex;
}
}
这是我的Bean Usuario:
public class Usuario {
private int codigo;
private String nombre;
private String clave;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getClave() {
return clave;
}
public void setClave(String clave) {
this.clave = clave;
}
}
答案 0 :(得分:0)
只需将Usuario
对象作为参数发送到Modificar
函数:
public void Modificar(Usuario us) throws Exception {
//just to maintain compatibility with your current Usuario us local variable
//FacesContext context = FacesContext.getCurrentInstance();
//Usuario us = (Usuario) context.getApplication().evaluateExpressionGet(context, "#{Usuario}", Usuario.class);
//code goes here...
}
修改JSF代码以将其发送到<p:commandButton>
:
<p:dataTable style="width:450px" value="#{DAOUsuario.Listar()}" var="datos">
<p:column headerText="Datos Personales" style="background:#19708F ; color: white">
<p:outputLabel value="Nombre"/>
<h:inputText value="#{datos.nombre}"/>
<br/>
<p:outputLabel value="Clave" />
<h:inputText value="#{datos.clave}"/>
<br/>
<h:commandButton value="Modificar" action="#{DAOUsuario.Modificar(datos)}" />
</p:column>
</p:dataTable>
在问题范围之外,作为建议,不要将您的DAO
类用作托管bean,最好通过至少拥有这些逻辑层来利用应用程序中的耦合:
DAO
类)另一个建议:请遵循类和命名函数的JavaBeans命名约定,您可以快速查看here。例如,您的DAOUsuario
函数应为listar
,而不是Listar
和modificar
,而不是Modificar
。