jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
街角旳祝福 发表于5年前
jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
  • 发表于 5年前
  • 阅读 1098
  • 收藏 4
  • 点赞 0
  • 评论 2

标题:腾讯云 新注册用户域名抢购1元起>>>   

在jsf中,同一个页面上有公有的内容,也有非公有的内容,通过一个按钮进行切换来显示不同的内容(通过ajax实现):
   前台页面:(这句话放到单选按钮里面,这样后台就能知道切换后往后台传的值)
          <p:ajax immediate="true" listener="#{userBean.userTypeChange}" update=":theShowPage" />
   注释:
          immediate="true"表示跳过验证立即执行;

        update=":theShowPage"表示切换完按钮后更新的页面。

  后台页面:
          public void userTypeChange(AjaxBehaviorEvent event) {
          Object item = ((SelectOneMenu) event.getSource()).getSubmittedValue();
           int role= Integer.parseInt((String.valueOf(item)));
         if (newValue == "管理员") {
          user.setUserType(1);
         }
           }

   前台页面如果要显示不同的值,可以在同一个页面上用rendered属性,这种验证能通过int型或boolean类型进行显示,String类型的不行例如:
         rendered="#{userBean.user.userType==1}"

详细的一种写法: bean页面: private String province; private String city; public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } List selectItemList = new ArrayList(); public List getSelectItemList() { return selectItemList; } public void changeProvince(AjaxBehaviorEvent event) { String selectedValue =String.valueOf(((HtmlSelectOneMenu)event.getSource()).getSubmittedValue()) ; if (selectedValue.equals("hbs")) { selectItemList.add(new SelectItem("2", "Label2")); } else { selectItemList.add(new SelectItem("1", "Label1")); } }
标签: jsf 同一页面 切换
共有 人打赏支持
粉丝 3
博文 8
码字总数 5119
评论 (2)
温鹏
看了你两篇关于JSF的博客,修改了一点,如下所示,有错误之处请指出!
xhtml页面:

<p:selectOneMenu id="type" value="#{userBean.user.userType}" style="width:300px">
<f:selectItems value="#{userBean.userTypes}" />
<p:ajax immediate="true" listener="#{userBean.userTypeChange}" update=":theShowPage" />
</p:selectOneMenu>


既然userBean与前台下拉框已经绑定,那么在后台就无须判断提交的值是啥了
public class UserBean{
  private User user;

  private static Map<String, Integer> userTypes = new LinkedHashMap<String, Integer>();
static {
userTypes.put(“管理员”,admin);
userTypes.put(“维护员”,maint);
userTypes.put(“档案员”,recordor);
}

  //p:ajax 如果没有指定partialSubmit="" 及 process="",默认就已经提交了selectOneMenu所在form的所有值
  public void userTypeChange() {
   //Object item = ((SelectOneMenu) event.getSource()).getSubmittedValue();
   //String role = (String.valueOf(item));
   if (user.getUserType() == admin) {
     //user.setUserType(1);
     //处理其他逻辑
   }
  }
}
还有,在xhtml中用 rendered="#{userBean.user.userType eq 1}"
街角旳祝福
你好,首先userBean与前台下拉框已经绑定,我此时后台对它设值主要是为了和前台部分页面显示不同内容相关联的,因为我下拉框每切换一下,显示的页面就会变化,item 对象中获得前台下拉框中的值,此时你必须把该值给userType,因为我ajax绑定后台的方法中只能通过item获得下拉框中的值。
其次 rendered="#{userBean.user.userType==1}",是没有问题的。此时我的1为int类型的。
×
街角旳祝福
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: