我想选择一个用户并在弹出页面中进行编辑。
<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>
弹出代码
public String JSPopup() {
return "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');return false;";
}
首先,我将选择用户并将其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) {
}
}
答案 0 :(得分:0)
return false;
中的userBean.JSPopup()
表示您不应启动默认事件,因此您的操作永远不会被调用。删除它,它应该没问题。
另一个暗示,此刻并没有给你造成任何问题,但值得注意。 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代码,但将来,如果您向该方法添加其他逻辑,则可能会得到意外结果。