Javascript 在h:commandbutton中使用onclick和操作
我想选择一个用户并在弹出页面中编辑它Javascript 在h:commandbutton中使用onclick和操作,javascript,jsf,jsf-2,commandbutton,Javascript,Jsf,Jsf 2,Commandbutton,我想选择一个用户并在弹出页面中编辑它 <h:form> <h:selectOneMenu id="friendselected" value="#{userBean.selecteduser}"> <f:selectItems value="#{userBean.users}" /> </h:selectOneMenu> <h:commandButton value
<h:form>
<h:selectOneMenu id="friendselected" value="#{userBean.selecteduser}">
<f:selectItems value="#{userBean.users}" />
</h:selectOneMenu>
<h:commandButton value="Edit User" action="#{userBean.edituser()}" onclick="#{userBean.JSPopup()}" />
</h:form>
首先,我将选择用户并将其id设置为selecteduser。在弹出页面中,我看到它的信息并进行编辑
public void edituser()
{
initializeJdbc();
String aSQL="select * from users where UserID="+selecteduser;
Statement st = null;
ResultSet rs = null;
try {
st = (Statement) connect.createStatement();
rs = st.executeQuery(aSQL);
if(rs.next()) {
fullname=rs.getString("FullName");
username=rs.getString("UserName");
password=rs.getString("Password");
gender=rs.getString("Gender").charAt(0);
BirthDate=rs.getString("BirthDate");
Tel=rs.getString("Tel");
Email=rs.getString("Email");
Address=rs.getString("Address");
}
} catch (Exception ex) {
}
}
返回false您的userBean.JSPopup()
中的code>表示您不应该启动默认事件,因此您的操作永远不会被调用。把它取下来,它就会好了
另一个提示,目前不会给您带来问题,但值得注意。onclick是一个值属性,因此当您在其中放置一个方法表达式时,它不会调用方法bean onclick,而是在呈现页面时立即调用它(只需在JSPopup方法中设置一个调试,即可看到这一点)。如果我是你,我会用js代码替换方法表达式
onclick="javascript:void window.open(' UserEdit.xhtml ',' name ','width=700,height=500,toolbar=0,menubar=0,location=0,status=0,scrollbars=0,resizable=1,left=0,top=0');"
或者创建一个函数并从onclick调用它。目前您没有收到任何问题,因为该方法仅返回js代码,但在将来,如果您向该方法添加其他逻辑,您可能会得到意外的结果。我看不到任何问题……按钮不起作用。仅单击一次在commandButton中工作,但不使用操作。我怎样才能把点击和行动结合起来?
onclick="javascript:void window.open(' UserEdit.xhtml ',' name ','width=700,height=500,toolbar=0,menubar=0,location=0,status=0,scrollbars=0,resizable=1,left=0,top=0');"