文档章节

jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容

街角旳祝福
 街角旳祝福
发布于 2013/05/23 16:56
字数 298
阅读 1104
收藏 4
在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")); } }

© 著作权归作者所有

共有 人打赏支持
街角旳祝福
粉丝 3
博文 11
码字总数 5119
作品 0
海淀
程序员
加载中

评论(2)

街角旳祝福
街角旳祝福
你好,首先userBean与前台下拉框已经绑定,我此时后台对它设值主要是为了和前台部分页面显示不同内容相关联的,因为我下拉框每切换一下,显示的页面就会变化,item 对象中获得前台下拉框中的值,此时你必须把该值给userType,因为我ajax绑定后台的方法中只能通过item获得下拉框中的值。
其次 rendered="#{userBean.user.userType==1}",是没有问题的。此时我的1为int类型的。
温鹏
温鹏
看了你两篇关于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}"
JSF 2 简介,第 1 部分: 流线化 Web 应用程序开发

在朋友的强烈推荐下,开始看JSF2.0。看了第一部分。感觉不是太大。接下来继续学习,应该会有不错的体验。。。 使用 JSF 2 简化导航、免除 XML 配置并轻松访问资源 public class Place { ......

晨曦之光
2012/03/09
0
0
怀疑论者的 JSF: JSF 应用程序的生命周期

级别: 中级 Rick Hightower (rhightower@arc-mind.com), CTO, ArcMind 2005 年 3 月 01 日 本系列怀疑论者的 JSF 一共包含 4 篇文章,本文是其中的第 2 篇。在本文中,Rick Hightower 对 Ja...

晨曦之光
2012/03/09
0
0
JSF 2 简介,第 3 部分: 事件处理、JavaScript 和 Ajax

确实相当强大。 转自:http://www.ibm.com/developerworks/cn/java/j-jsf2fu3/ 使用更多新 JSF 2 特性增强复合组件 <h:selectOneMenu onchange="submit()" value="#{cc.parent.attrs.locati......

晨曦之光
2012/03/09
0
0
JSF 2 简介: 复合组件最佳实践

JSF 是一个基于组件的框架,这意味着它可以提供您所需要的基础架构来实现您自己的组件。JSF 2 提供一种简单的方法来实现自定义的复合组件。 在前面的文章中,我已经向您展示了几个复合组件的...

IBMdW
2011/05/18
1K
0
1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记

1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记 既然已经对JSF能够解决什么问题有了初步理解,我们来开始开发一个简单的应用。本节假定你已熟悉Java Web应用和JSP(关于这些技术的信息...

hxzon
2009/03/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
35分钟前
3
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
43分钟前
1
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
53分钟前
19
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部