jsf传递参数

来源:互联网 发布:淘宝淘你喜欢 编辑:程序博客网 时间:2024/06/09 17:05

JSF参数传递方式之一:f:param标签

页面到Bean的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <h:commandLink value="Test2" action="#{paramBean.test}">   
  3.                 <f:param name="name" value="zhang"></f:param>   
  4.                 <f:param name="id" value="123456"></f:param>   
  5.             </h:commandLink>   
  6. </h:form>  

<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对象取值

Java代码

  1. HttpServletRequest request (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();   
  2.         request.getParameter("name");  

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

        request.getParameter("name");

        (2)通过RequestParameterMap取值

Java代码

  1. Map varMap FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();   
  2.         varMap.get("id");  

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

        varMap.get("id");

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

Java代码

  1. <managed-bean>   
  2.   <managed-bean-name>paramBean</managed-bean-name>   
  3.   <managed-bean-class>com.spg.bean.ParamBean</managed-bean-class>   
  4.   <managed-bean-scope>request</managed-bean-scope>   
  5.   <managed-property>   
  6.    <property-name>id</property-name>   
  7.    <property-class>java.lang.String</property-class>   
  8.    <value>#{param.id} </value>   
  9.   </managed-property>   
  10. </managed-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)

Java代码

  1. <h:outputLink value="param2.jsf">   
  2.                 <h:outputText value="Test4"></h:outputText>   
  3.                 <f:param name="name" value="chen"></f:param>   
  4.                 <f:param name="id" value="123456"></f:param>   
  5.     </h:outputLink>  

<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)

Java代码

  1. <h:outputLink value="param2.jsf?name=chen&id=123456">   
  2.                 <h:outputText value="Test4"></h:outputText>   
  3.     </h:outputLink>  

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

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

  </h:outputLink>

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

页面中取参数:

(1) 使用JSF的值表达式

Java代码

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

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

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

(2) 使用JSP的表达式

Java代码

  1. <%=request.getParameter("name")%>   
  2.     <%=request.getParameter("id")%>  

 

JSF参数传递方式之二:Backing Bean 与 h:inputHidden标签

Backing Bean

Java代码

  1. import javax.faces.component.UIInput;   
  2. import javax.faces.component.UIOutput;   
  3.   
  4. public class BackingBean   
  5. {   
  6.   
  7.     private UIOutput idComponent;   
  8.   
  9.     public UIOutput getIdComponent()   
  10.     {   
  11.         return idComponent;   
  12.     }   
  13.   
  14.     public void setIdComponent(UIOutput idComponent)   
  15.     {   
  16.         this.idComponent idComponent;   
  17.     }   
  18.   
  19.   
  20.  

import javax.faces.component.UIInput;

import javax.faces.component.UIOutput;

 

public class BackingBean

{

 

    private UIOutput idComponent;

 

    public UIOutput getIdComponent()

    {

        return idComponent;

    }

 

    public void setIdComponent(UIOutput idComponent)

    {

        this.idComponent = idComponent;

    }

 

 

}

页面到Bean的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <h:inputHidden value="123456" binding="#{backingBean.idComponent}"></h:inputHidden>   
  3.             <h:commandButton value="登录" action="#{paramBean.login}"></h:commandButton>   
  4.         </h:form>  

<h:form>

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

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

   </h:form>

后台取参数:

       

Java代码

  1. FacesContext context FacesContext.getCurrentInstance();   
  2.         BackingBean backBean =(BackingBean)context.getApplication().getVariableResolver().resolveVariable(context,"backingBean");//该方法已经过时   
  3.         BackingBean bean =(BackingBean)context.getApplication().getELResolver().getValue(context.getELContext(), null, "backingBean");   
  4.         backBean.getIdComponent().getValue();   
  5.         bean.getIdComponent().getValue();  

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页面到页面的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.         <h:inputHidden value="123456"            binding="#{backingBean.idComponent}"></h:inputHidden>   
  3.         <h:commandButton value="Test5"   action="param"></h:commandButton>   
  4.         <h:commandLink value="Test6" action="param"></h:commandLink>   
  5.     </h:form>  

<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 标签不能使用该方式传递参数!

页面中取参数:

Java代码

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

 

JSF参数传递方式之三:通过session(application)对象传递

页面到Bean的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <%session.setAttribute("name","hujilie"); %>   
  3.             <%application.setAttribute("id","123456"); %>   
  4.             <h:commandButton value="Test8" action="#{paramBean.test2}"></h:commandButton>   
  5.             <h:commandLink  value="Test8" action="#{paramBean.test2}"></h:commandLink>   
  6.     </h:form>  

<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>

后台取参数:

Java代码

  1. FacesContext context FacesContext.getCurrentInstance();   
  2.         Map sessionMap =context.getExternalContext().getSessionMap();   
  3.         Map applicationMap context.getExternalContext().getApplicationMap();   
  4. HttpSession session =(HttpSession) context.getExternalContext().getSession(true);   
  5. ServletContext application (ServletContext)context.getExternalContext().getContext();   
  6.         sessionMap.get("name");   
  7.         applicationMap.get("id");   
  8.         session.getAttribute("name");   
  9.         application.getAttribute("id");  

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");

页面到页面的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <%session.setAttribute("name","hujilie"); %>   
  3.             <%application.setAttribute("id","123456"); %>   
  4.             <h:outputLink value="param2.jsf">Test10</h:outputLink>   
  5.     </h:form>  

<h:form>

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

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

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

  </h:form>

页面中取参数:

Java代码

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

 

JSF参数传递方式之四:f:attribute标签传递

页面到Bean的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <h:commandButton action="#{paramBean.test3}" value="Test11" actionListener="#{paramBean.changeName}">   
  3.                 <f:attribute name="name" value="hujilie"/>   
  4.             </h:commandButton>   
  5.             <h:commandLink action="#{paramBean.test3}" value="Test12" actionListener="#{paramBean.changeName}">   
  6.                 <f:attribute name="name" value="hujilie"/>   
  7.             </h:commandLink>   
  8.     </h:form>  

<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" value="hujilie"/>

      </h:commandLink>

  </h:form>

后台取参数:

Java代码

  1. public void changeName(ActionEvent e)   
  2.     {   
  3.         UIComponent component e.getComponent();   
  4.         Map<String, Object> map component.getAttributes();   
  5.         setName((String)map.get("name"));   
  6.      

 

JSF参数传递方式之五:f:setPropertyActionListener 标签传递

页面到Bean的参数传递

页面中设置参数:

Java代码

  1. <h:form>   
  2.             <h:commandButton action="#{paramBean.test3}" value="Test14">  
  3.                 <f:setPropertyActionListener value="hujilie" target="#{paramBean.name}"/>   
  4.             </h:commandButton>   
  5.             <h:commandLink action="#{paramBean.test3}" value="Test15">   
  6.                 <f:setPropertyActionListener value="hujilie" target="#{paramBean.name}"/>   
  7.             </h:commandLink>   
  8.     </h:form>  

<h:form>

      <h:commandButton action="#{paramBean.test3}" value="Test14">

        <f:setPropertyActionListener value="hujilie" target="#{paramBean.name}"/>

      </h:commandButton>

      <h:commandLink action="#{paramBean.test3}" value="Test15">

        <f:setPropertyActionListener value="hujilie" target="#{paramBean.name}"/>

      </h:commandLink>

  </h:form>

后台取参数:直接使用属性的值。

 

文章出处:http://pity1115.javaeye.com/category/56321

 

原创粉丝点击