JSF参数传递方式

JSF参数传递方式:

1. <f:param name=" " value=""></f:param>

注意:该标签只能传递String类型的参数,如果value的值设为一个对象,则会调用该类的toString()方法获得一个String类型的值作为参数。

1.1. 页面到Bean的参数传递

页面中设置参数:

<h:form>

<h:commandLink value="Test2" action="#{paramBean.test}">

<f:param name="name" value="zhang"></f:param>

<f:param name="id" value="123456"></f:param>

</h:commandLink>

</h:form>

注意:这里只能使用h:commandLink标签,而不能使用h:commandButton标签!

后台取参数:

(1) 通过Request对象取值

        HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();

        request.getParameter("name");

(2)通过RequestParameterMap取值

        Map varMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        varMap.get("id");

(3)通过配置文件进行Bean的属性值注入,在Bean的方法中直接使用属性

<managed-bean>

  <managed-bean-name>paramBean</managed-bean-name>

  <managed-bean-class>com.spg.bean.ParamBean</managed-bean-class>

  <managed-bean-scope>request</managed-bean-scope>

  <managed-property>

   <property-name>id</property-name>

   <property-class>java.lang.String</property-class>

   <value>#{param.id} </value>

  </managed-property>

</managed-bean>

 页面到页面的参数传递

页面中设置参数:

(1)

<h:outputLink value="param2.jsf">

<h:outputText value="Test4"></h:outputText>

<f:param name="name" value="chen"></f:param>

<f:param name="id" value="123456"></f:param>

</h:outputLink>

(2)

<h:outputLink value="param2.jsf?name=chen&id=123456">

<h:outputText value="Test4"></h:outputText>

</h:outputLink>

注意:以上两种方法,不能同时使用!

页面中取参数:

(1) 使用JSF的值表达式

<h:outputText value="#{param.name}"></h:outputText>

<h:outputText value="#{param.id}"></h:outputText>

(2) 使用JSP的表达式

<%=request.getParameter("name")%>

<%=request.getParameter("id")%>

2. Backing Bean 与 h:inputHidden

2.1页面到Bean的参数传递

页面中设置参数:

<h:form>

<h:inputHidden value="123456" binding="#{backingBean.idComponent}"></h:inputHidden>

<h:commandButton value="登录" action="#{paramBean.login}"></h:commandButton>

</h:form>

后台取参数:

        FacesContext context = FacesContext.getCurrentInstance();

        BackingBean backBean =(BackingBean)context.getApplication().getVariableResolver().resolveVariable(context,"backingBean");//该方法已经过时

        BackingBean bean =(BackingBean)context.getApplication().getELResolver().getValue(context.getELContext(), null"backingBean");

        backBean.getIdComponent().getValue();

        bean.getIdComponent().getValue();

2.2页面到页面的参数传递

页面中设置参数:

<h:form>

<h:inputHidden value="123456"  binding="#{backingBean.idComponent}"></h:inputHidden>

<h:commandButton value="Test5"  action="param"></h:commandButton>

<h:commandLink value="Test6" action="param"></h:commandLink>

</h:form>

注意:h:outputLink 标签不能使用该方式传递参数!

页面中取参数:

<h:outputText value="#{backingBean.idComponent.value}"></h:outputText>

3. 通过session(application)对象传递

3.1页面到Bean的参数传递

页面中设置参数:

<h:form>

<%session.setAttribute("name","hujilie"); %>

<%application.setAttribute("id","123456"); %>

<h:commandButton value="Test8" action="#{paramBean.test2}"></h:commandButton>

<h:commandLink  value="Test8" action="#{paramBean.test2}"></h:commandLink>

</h:form>

后台取参数:

FacesContext context = FacesContext.getCurrentInstance();

        Map sessionMap =context.getExternalContext().getSessionMap();

        Map applicationMap = context.getExternalContext().getApplicationMap();

HttpSession session =(HttpSession) context.getExternalContext().getSession(true);

ServletContext application = (ServletContext)context.getExternalContext().getContext();

        sessionMap.get("name");

applicationMap.get("id");

session.getAttribute("name");

        application.getAttribute("id");

3.2页面到页面的参数传递

页面中设置参数:

<h:form>

<%session.setAttribute("name","hujilie"); %>

<%application.setAttribute("id","123456"); %>

<h:outputLink value="param2.jsf">Test10</h:outputLink>

</h:form>

页面中取参数:

<h:outputText value="#{sessionScope.name}"></h:outputText><br>

<h:outputText value="#{applicationScope.id}"></h:outputText>

4. f:attribute标签传递

4.1页面到Bean的参数传递

页面中设置参数:

<h:form>

<h:commandButton action="#{paramBean.test3}" value="Test11" actionListener="#{paramBean.changeName}">

<f:attribute name="name" value="hujilie"/>

</h:commandButton>

<h:commandLink action="#{paramBean.test3}" value="Test12" actionListener="#{paramBean.changeName}">

<f:attribute name="name" 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值