Java 使用JSF编辑一行mysql
我在xhtml页面上获取mysql“login”表数据,然后尝试编辑一行,然后更新它。问题是,当我单击单行的“编辑”列时,所有行都变为可编辑。我的xhtml页面代码是:Java 使用JSF编辑一行mysql,java,eclipse,jsf,jakarta-ee,Java,Eclipse,Jsf,Jakarta Ee,我在xhtml页面上获取mysql“login”表数据,然后尝试编辑一行,然后更新它。问题是,当我单击单行的“编辑”列时,所有行都变为可编辑。我的xhtml页面代码是: <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Users</title>
<h:outputStylesheet library="css" name="style.css" />
</h:head>
<h:body>
<h1>Users</h1>
<h:form>
<h:dataTable value="#{loginBean.list}" var="list" border="1">
<h:column>
<f:facet name="header">Name</f:facet>
<h:inputText value="#{list.UName}" size="10" rendered="#{list.isEditable}" />
<h:outputText value="#{list.UName}" rendered="#{not list.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Email</f:facet>
<h:inputText value="#{list.emailAdd}" size="10" rendered="#{list.isEditable}" />
<h:outputText value="#{list.emailAdd}" rendered="#{not list.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Password</f:facet>
<h:inputText value="#{list.pword}" size="10" rendered="#{list.isEditable}" />
<h:outputText value="#{list.pword}" rendered="#{not list.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Edit</f:facet>
<h:commandLink value="Edit" action="#{loginBean.editable(list)}"/>
</h:column>
<h:column>
<f:facet name="header">Update</f:facet>
<h:commandLink value="Update" action="#{loginBean.updateAction()}" />
</h:column>
<h:column>
<f:facet name="header">Delete</f:facet>
<h:commandLink value="Delete" action="#{loginBean.deleteAction(list)}" />
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
问题是,您对所有行使用相同的布尔状态,每行需要单独的状态 因此,替换
<h:column>
<f:facet name="header">Name</f:facet>
<h:inputText value="#{list.UName}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.UName}" rendered="#{not loginBean.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Email</f:facet>
<h:inputText value="#{list.emailAdd}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.emailAdd}" rendered="#{not loginBean.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Password</f:facet>
<h:inputText value="#{list.pword}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.pword}" rendered="#{not loginBean.isEditable}" />
</h:column>
进入您的登录
实体
编辑:根据评论部分,如何在操作后更新视图?
使用Ajax,您的链接变得
<h:commandLink value="Edit" action="#{loginBean.editable(list)}">
<f:ajax render="yourDataTable"/>
</h:commandLink>
另请参见@BalucC我已做出更改,并编辑了问题。请复习。现在,当我单击编辑链接时,什么也没有发生,没有字段是可编辑的。您添加了
rowStatePreserved=“true”
。。为什么?请修改您的问题,以便我们可以查看范围等。顺便说一句,我不是BalucC。对不起,我已经做了更改,请查看,结果没有更改,单击EditsivaGranuan仍然没有任何变化。是的,它被调用,我已经检查过了。它还调用登录实体setiseditable。但他们什么也不做,我不知道为什么
<h:column>
<f:facet name="header">Name</f:facet>
<h:inputText value="#{list.UName}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.UName}" rendered="#{not loginBean.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Email</f:facet>
<h:inputText value="#{list.emailAdd}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.emailAdd}" rendered="#{not loginBean.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Password</f:facet>
<h:inputText value="#{list.pword}" size="10" rendered="#{loginBean.isEditable}"/>
<h:outputText value="#{list.pword}" rendered="#{not loginBean.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Name</f:facet>
<h:inputText value="#{list.UName}" size="10" rendered="#{list.isEditable}"/>
<h:outputText value="#{list.UName}" rendered="#{not list.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Email</f:facet>
<h:inputText value="#{list.emailAdd}" size="10" rendered="#{list.isEditable}"/>
<h:outputText value="#{list.emailAdd}" rendered="#{not list.isEditable}" />
</h:column>
<h:column>
<f:facet name="header">Password</f:facet>
<h:inputText value="#{list.pword}" size="10" rendered="#{list.isEditable}"/>
<h:outputText value="#{list.pword}" rendered="#{not list.isEditable}" />
</h:column>
@Transient
private boolean isEditable;
//+ getter and setter
<h:commandLink value="Edit" action="#{loginBean.editable(list)}">
<f:ajax render="yourDataTable"/>
</h:commandLink>