在我的代码中,我将摄影师的身份发送到另一页。但是,当我试图得到它时,我得到了空。 这是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
有人能帮助我吗?它曾经工作但现在停止了,我不知道。
答案 0 :(得分:1)
f:param确实发送参数。不幸的是,它发送的参数与操作开始之前一样。
有人希望(至少我做过)它将执行操作并计算参数,然后执行重定向,但是f:param的值已经在操作开始之前进行了计算(因此通常为null,0或参数中的类似内容),并且重定向无法反映操作结果。
如果您需要根据解决方案更新操作的结果,则需要从操作本身启动重定向。看一下here的操作方法。
答案 1 :(得分:0)
&LT; F:PARAM /&GT;应该管用。但是有另一种方法可以通过参数。试试那个
<h:button outcome="/viewGallery.xhtml?faces-redirect=true&pgid=#{logged.logged.photographerid}" value="View Gallery" class="btn btn-lg">
</h:button>