Java 使用p:SelectOne菜单更改分配的用户
我一直在寻找类似的问题,但我没有找到任何。 事情是这样的 我正在尝试创建一个web应用程序来处理人力资源方面的事情,比如员工请求(辞职、贷款、休假等) 我正在使用primeface,我有以下问题无法解决 我想做的是: 1-当用户首次创建请求并分配用户并提交表单时 下一步是 2-经理会看到请求,然后使用数据表中的下拉菜单将“负责请求的人员”更改为新的人员,我一直在尝试解决这个问题,但运气不佳。 这是对话脚本Java 使用p:SelectOne菜单更改分配的用户,java,jsf-2,primefaces,Java,Jsf 2,Primefaces,我一直在寻找类似的问题,但我没有找到任何。 事情是这样的 我正在尝试创建一个web应用程序来处理人力资源方面的事情,比如员工请求(辞职、贷款、休假等) 我正在使用primeface,我有以下问题无法解决 我想做的是: 1-当用户首次创建请求并分配用户并提交表单时 下一步是 2-经理会看到请求,然后使用数据表中的下拉菜单将“负责请求的人员”更改为新的人员,我一直在尝试解决这个问题,但运气不佳。 这是对话脚本 <h:form id='resignf'> <p:dialog id='
<h:form id='resignf'>
<p:dialog id='res' header="Resign Request" widgetVar="resign" minHeight="40">
<p:outputLabel value="Employee name" />
<p:inputText value="#{controller.resignName}" required="true" requiredMessage="This field is required" />
<p:outputLabel value="Employee Number" />
<p:inputText value="#{controller.resignEmployeNum}" required="true" />
<p:inputText value="#{controller.resignNationalIDNum}" required="true" />
<p:inputText value="#{controller.resignNotes}" required="true" />
<p:outputLabel for="AssignUser" value="User" />
<p:selectOneMenu id="AssignUser" value="#{controller.assignUser}" style="width:150px" converter="UConverter">
<f:selectItems value="#{controller.usersList}" var="user" itemLabel="#{user.username}"/>
</p:selectOneMenu >
<p:commandButton action="#{controller.createResignRequest()}" onclick="PF('resign').hide();" update="@all"/>
</p:dialog>
现在所有这些都工作得很好,但是当我试图在这里用新用户更改旧用户时,我感到困惑!到目前为止,我一直在想的是,我需要找到老用户,然后切换他,但我无法找到使用选择列表的方法。下面是更改“负责请求的用户”的脚本
我试图从代码中获得尽可能多的信息,但我有很多东西不确定是否应该提交。我试过ajax
注意:我正在使用mySQL、ApacheTomcat,以备不时之需。解决了这个问题
public void editRequestStep(ResignationRequest r) {
System.out.println("Edit resign " + EditAssignUser +" this is userthig" + r.getName());
try {
System.out.println("Edit resign");
r.setUserID(EditAssignUser);
} catch (Exception ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
<p:selectOneMenu id="AssignUser" value="#{controller.editAssignUser}" style="width:150px" converter="UConverter">
<p:ajax listener="#{controller.editRequestStep(resign)}" update="@all"/>
<f:selectItems value="#{controller.usersList}" var="user" itemLabel="#{user.username}" >
</f:selectItems>
显然,这不是一个完全相同的问题,因为这是一个具体的问题。把你的问题分解成可管理的部分。您能否从客户端向服务器获取正确的数据?如果没有,则不涉及MySQL,如果可以,则不涉及jsf/primefaces。jquery目前完全不参与,JavaSE也不参与。我删除了这些,但请通过阅读和@Kukeltje来改进您的问题实际上我的问题不是获取数据或不获取数据,我实际上在使用sql。primeface的问题是,我需要使用下拉菜单更改“ResignRequest表”中的用户ID,但我不能。这就是全部。“这就是全部”,关于什么?您永远不会直接从下拉列表(客户端)将数据获取到数据库表中。JSF负责将数据从客户端获取到Web服务器,将数据从Web服务器获取到数据库是不同的代码。你发布了一个对话框,这样你就可以在没有对话框的情况下让它工作了?如果没有,请将其从示例中删除。你能在没有数据表的情况下让它工作吗。如果不是,请将其从示例中删除。您的问题与JavaSE无关。您不能用只包含一个main方法和基本java j.l.s类的代码来重现这一点,为什么在“onchange”中使用“submit()”?它有什么作用?也许读书有帮助。以及
selectItems
上的actionListener???我认为您应该从开发中退一步,阅读一本关于JSF的基础教程
<p:dataTable id="resignTable1" cellSeparator="true" editMode="cell" editable="true" var="resign" value="#{controller.resignList}" paginator="true" rows="10" rowIndexVar="index1">
<p:ajax id="aj" event="cellEdit" listener="#{controller.editUser(user)}" update="resignTable1"/>
<p:column headerText="Employee number">
<p:cellEditor>
<f:facet name="output"> <h:outputText value="#{resign.employeeNum}" /></f:facet>
<f:facet name="input"> <h:inputText value="#{resign.employeeNum}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="name">
<p:cellEditor>
<f:facet name="output"> <h:outputText value="#{resign.name}" /></f:facet>
<f:facet name="input"> <h:inputText value="#{resign.name}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Request Number">
<p:cellEditor>
<f:facet name="output"> <h:outputText value="#{resign.id}" /></f:facet>
<f:facet name="input"> <h:inputText value="#{resign.id}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="User responsible for the request">
<p:cellEditor>
<f:facet name="output"> <h:outputText value="#{resign.userID}" /></f:facet>
<f:facet name="input"> <h:inputText value="#{resign.userID}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Comments">
<p:cellEditor>
<f:facet name="output"> <h:outputText value="#{resign.notes}" /></f:facet>
<f:facet name="input"> <h:inputText value="#{resign.notes}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Send the request to the next employee">
<p:selectOneMenu id="AssignUser" value="#{controller.assignUser}" style="width:150px" converter="UConverter" onchange="submit();">
<f:selectItems value="#{controller.usersList}" var="user" itemLabel="#{user.username}" actionListener="#{controller.editRequestStep(resign)}" >
</f:selectItems>
</p:selectOneMenu >
public void editRequestStep(ResignationRequest r) {
System.out.println("Edit resign");
try {
System.out.println("Edit resign");
rController.edit(r);
} catch (Exception ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void editRequestStep(ResignationRequest r) {
System.out.println("Edit resign " + EditAssignUser +" this is userthig" + r.getName());
try {
System.out.println("Edit resign");
r.setUserID(EditAssignUser);
} catch (Exception ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
<p:selectOneMenu id="AssignUser" value="#{controller.editAssignUser}" style="width:150px" converter="UConverter">
<p:ajax listener="#{controller.editRequestStep(resign)}" update="@all"/>
<f:selectItems value="#{controller.usersList}" var="user" itemLabel="#{user.username}" >
</f:selectItems>
public void editRequestStep(ResignationRequest r) {
System.out.println("Edit resign " + EditAssignUser +" this is userthig" + r.getName());
try {
System.out.println("Edit resign");
r.setUserID(EditAssignUser);
} catch (Exception ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}