f:param不发送参数

时间:2014-05-30 14:02:33

标签: jsf post

在我的代码中,我将摄影师的身份发送到另一页。但是,当我试图得到它时,我得到了空。 这是jsf代码:

 <h:commandButton action="/viewGallery.xhtml" value="View Gallery" class="btn btn-lg">
        <f:param name="pgid" value="#{logged.logged.photographerid}" />
 </h:commandButton>

我的bean变量:

@ManagedBean(value = "album")
@RequestScoped
public class AlbumDAO {

private CachedRowSetImpl crs;
private Album a;
private ArrayList<Album> aList;

@ManagedProperty(value = "#{param.pgid}")
private int pgid;

在那里我打印bean中的参数:

        FacesContext fc = FacesContext.getCurrentInstance();
        Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
        System.out.println("params = " + params);
        System.out.println("params.get(pgid) = " + params.get("pgid"));

当我打印时,我得到以下内容:

     INFO:   params = {j_idt7=j_idt7, j_idt7:j_idt15=Go to profile,  javax.faces.ViewState=6834092215913674538:3363757559364464357}
     INFO:   params.get(pgid) = null

有人能帮助我吗?它曾经工作但现在停止了,我不知道。

2 个答案:

答案 0 :(得分:1)

f:param确实发送参数。不幸的是,它发送的参数与操作开始之前一样。

有人希望(至少我做过)它将执行操作并计算参数,然后执行重定向,但是f:param的值已经在操作开始之前进行了计算(因此通常为null,0或参数中的类似内容),并且重定向无法反映操作结果。

如果您需要根据解决方案更新操作的结果,则需要从操作本身启动重定向。看一下here的操作方法。

答案 1 :(得分:0)

&LT; F:PARAM /&GT;应该管用。但是有另一种方法可以通过参数。试试那个

<h:button outcome="/viewGallery.xhtml?faces-redirect=true&amp;pgid=#{logged.logged.photographerid}" value="View Gallery" class="btn btn-lg">
</h:button>