JSF参数传递方式

来源:互联网 发布:数据平台运营管理办法 编辑:程序博客网 时间:2024/06/02 09:17
JSF参数传递方式之一:f:param标签

页面到Bean的参数传递
页面中设置参数:
Java代码  收藏代码

    <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代码  收藏代码

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



(2)通过RequestParameterMap取值
Java代码  收藏代码

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


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

    <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)
Html代码  收藏代码

    <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)
Html代码  收藏代码

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


注意:以上两种方法,不能同时使用!
页面中取参数:
(1) 使用JSF的值表达式
Html代码  收藏代码

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


(2) 使用JSP的表达式
Html代码  收藏代码

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



JSF参数传递方式之二:Backing Bean 与 h:inputHidden标签
Java代码  收藏代码

    Backing Bean  
      
    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的参数传递
页面中设置参数:
Html代码  收藏代码

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


后台取参数:
Java代码  收藏代码

    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();     
      
    FacesContext context = FacesContext.getCurrentInstance();  


2.2页面到页面的参数传递
页面中设置参数:
Html代码  收藏代码

    <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 标签不能使用该方式传递参数!
页面中取参数:
Html代码  收藏代码

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



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

页面到Bean的参数传递
页面中设置参数:
Html代码  收藏代码

    <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代码  收藏代码

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


页面到页面的参数传递
页面中设置参数:
Html代码  收藏代码

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


页面中取参数:
Html代码  收藏代码

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



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

页面到Bean的参数传递
页面中设置参数:
Html代码  收藏代码

    <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代码  收藏代码

    public void changeName(ActionEvent e)      
        {      
            UIComponent component = e.getComponent();      
            Map<String, Object> map = component.getAttributes();      
            setName((String)map.get("name"));      
        }    



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

页面到Bean的参数传递
页面中设置参数:
Html代码  收藏代码

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


后台取参数:直接使用属性的值。
原创粉丝点击