jsf传递参数的问题,急急急!!顶的给分……

时间:2022-08-21 21:29:56
本人刚刚接触jsf 对jsf不了解 想问下
怎样在jsf页面中直接调用后台管理bean中带参数的方法

比如我下面写的当我点这个按钮的时候调用后台管理bean中的getlist()方法,  当后台管理bean中的这个方法有参数,而这个参数要从页面中传递过去该怎么写呢????  我需要的是单击按钮调用方法的同时传递参数,大侠们指点下了,在线等!!!


<h:commandButton action="#{pagebean.getlist}" value="显示"></h:commandButton>

10 个解决方案

#1


没用过jsf,一直都是struts

#2


没用过jsf,一直都是struts

#3


通过 ajax实现

#4


不能把参数通过http方式提交吗 在后台页面采用request.getParameter赋值给bean

#5


把参数通过http方式提交    获取页面值然后赋值给bean  你试试可以吗   我记得以前好像用过~~~

#6


标准是不支持action调用带参数的方法的
只能采用变通的办法。
比如用f:param传递参数给后台,这样,你就能在函数里获取了

#7


但注意f:param只能对commandLink起作用,
用f:attribute比较好

例子如下:
<h:commandButton value="Press here" actionListener="#{myBean.action}">
        <f:attribute name="attrname1" value="attrvalue1" />
        <f:attribute name="attrname2" value="attrvalue2" />
        ...
</h:commandButton>

    public void action(ActionEvent event) 
    {   
        String attrvalue1 = (String) event.getComponent().getAttributes().get("attrname1");
        String attrvalue2 = (String) event.getComponent().getAttributes().get("attrname2");
        ...
    }

#8


f:attribute还有个注意点就是别使用标准的组件属性名
比如:id,name,binding等等,会有冲突

#9


<a4j:commandButton value="编辑" oncomplete="Richfaces.showModalPanel('Edit_Panel'); return false; " reRender="PANEL_INFO,TABLE_LIST">
    <f:param name="DEPART_ID" value="#{item.id}"></f:param>
    <f:param name="OPERATION" value="EDIT"></f:param>
 </a4j:commandButton>

后台 Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
     String depart_ID=(String) params.get(StaticString.DEPART_ID) ;
     String OPERATION=(String) params.get(StaticString.OPERATION);

#10


可以用最简单的input button调用一个隐藏的t:commandLink
eg:
<input type="button" onclick="getElementById(' back').click();" value="back"
class="button_submit" />

<t:commandLink forceId="true" id=" back" action="back" value="#"  style="display:none"
styleClass="button_submit" >
<f:param name="isTam" value="yes" />
</t:commandLink>

#1


没用过jsf,一直都是struts

#2


没用过jsf,一直都是struts

#3


通过 ajax实现

#4


不能把参数通过http方式提交吗 在后台页面采用request.getParameter赋值给bean

#5


把参数通过http方式提交    获取页面值然后赋值给bean  你试试可以吗   我记得以前好像用过~~~

#6


标准是不支持action调用带参数的方法的
只能采用变通的办法。
比如用f:param传递参数给后台,这样,你就能在函数里获取了

#7


但注意f:param只能对commandLink起作用,
用f:attribute比较好

例子如下:
<h:commandButton value="Press here" actionListener="#{myBean.action}">
        <f:attribute name="attrname1" value="attrvalue1" />
        <f:attribute name="attrname2" value="attrvalue2" />
        ...
</h:commandButton>

    public void action(ActionEvent event) 
    {   
        String attrvalue1 = (String) event.getComponent().getAttributes().get("attrname1");
        String attrvalue2 = (String) event.getComponent().getAttributes().get("attrname2");
        ...
    }

#8


f:attribute还有个注意点就是别使用标准的组件属性名
比如:id,name,binding等等,会有冲突

#9


<a4j:commandButton value="编辑" oncomplete="Richfaces.showModalPanel('Edit_Panel'); return false; " reRender="PANEL_INFO,TABLE_LIST">
    <f:param name="DEPART_ID" value="#{item.id}"></f:param>
    <f:param name="OPERATION" value="EDIT"></f:param>
 </a4j:commandButton>

后台 Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
     String depart_ID=(String) params.get(StaticString.DEPART_ID) ;
     String OPERATION=(String) params.get(StaticString.OPERATION);

#10


可以用最简单的input button调用一个隐藏的t:commandLink
eg:
<input type="button" onclick="getElementById(' back').click();" value="back"
class="button_submit" />

<t:commandLink forceId="true" id=" back" action="back" value="#"  style="display:none"
styleClass="button_submit" >
<f:param name="isTam" value="yes" />
</t:commandLink>