【发布时间】:2017-01-13 01:58:14
【问题描述】:
我一直在寻找类似的问题,但我找不到任何问题。 所以事情就是这样
我正在尝试创建一个处理 HR 事务的 Web 应用程序,例如员工请求(辞职、贷款、休假等) 我正在使用 primeface,但有以下我无法弄清楚的问题。
我想做的是:
1- 当用户首次创建请求并分配用户并提交表单时 下一步是
2- 经理会看到请求,然后使用数据表中的下拉菜单将“负责请求的人员”更改为新的,我一直在尝试解决这个问题,但没有运气。 这是对话脚本
<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>
而代码是我下面的controller.java文件在表中创建请求
/* Request to resign*/
private List<ResignationRequest> resignList;
private ResignationRequestController rController = new ResignationRequestController();
private String resignName;
private String resignEmployeNum;
private String resignNationalIDNum;
private String ResignNotes;
private int AutoAssignToIDNUM;
/* end of request to resign*/
public void createResignRequest() {
System.out.println("createResignRequest");
ResignationRequest newResign = new ResignationRequest();
newResign.setName(resignName);
newResign.setEmployeeNum(resignEmployeNum);
newResign.setNationalID(resignNationalIDNum);
newResign.setNotes(ResignNotes);
newResign.setUserID(AssignUser);
rController.create(newResign);
resignList = rController.findResignationRequestEntities(); //retrieves all the resigns from the database
}
现在一切正常,但是当我在这里尝试用新用户更改旧用户时,我感到困惑!到目前为止,我一直在想的是我需要找到旧用户然后切换他,但我想不出使用选择列表的方法。下面是用于更改“对请求负责的用户”的脚本
<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);
}
}
我试图从代码中获得尽可能多的信息,但我有很多东西我不确定是否应该提交。我试过ajax
注意:我正在使用 mySQL、apache tomcat 以防万一。
【问题讨论】:
-
显然没有相同的问题,因为它是具体的。将您的问题分解为可管理的部分。你能从客户端获取正确的数据到服务器吗?如果没有,则不涉及 MySQL,如果可以,则不涉及 jsf/primefaces。 jquery 完全不涉及,java-se 也不涉及。我删除了这些,但请阅读 How to Ask 和 minimal reproducible example 来改进您的问题
-
@Kukeltje 实际上我的问题不是获取数据,我实际上是在使用 sql。关于 primeface 的事情是我需要使用下拉菜单更改“ResignRequest 表”中的用户 ID,但我不能。就是这样。
-
“仅此而已”,到底是什么?您永远不会直接从下拉列表(客户端)获取数据到数据库表中。JSF 负责将数据从客户端获取到网络服务器,将数据从网络服务器获取到数据库是不同的代码。你发布了一个对话,所以你可以让它在没有对话的情况下工作?如果没有,请将其从示例中删除。你能在没有数据表的情况下让它工作吗?如果没有,请将其从示例中删除。
-
您的问题与 java-se 无关。您无法使用仅包含 main 方法和基本 java j.l.s 类的代码来重现这一点
-
为什么在“onchange”中有一个“submit()”?它有什么作用?也许阅读stackoverflow.com/questions/3681123/… 会有所帮助。还有一个
selectItems上的actionListener???我认为你应该从开发中退后一步,阅读关于 JSF 的优秀基础教程
标签: java jsf-2 primefaces