Java 如何从facelet获取隐藏值?

Java 如何从facelet获取隐藏值?,java,jsf,jsf-2,Java,Jsf,Jsf 2,我的.xhtml页面中有几个隐藏字段 <h:inputHidden value="1" id="hidePrev"/> ..... <h:inputHidden value="1" id="hideNext"/> 我的bean代码: nextFlag = (String)FacesUtil.getMapValue("hideNext"); prevFlag = (String)FacesUtil.getMapValue("hidePrev"); 字段n

我的.xhtml页面中有几个隐藏字段

<h:inputHidden value="1" id="hidePrev"/>
.....
<h:inputHidden value="1" id="hideNext"/>
我的bean代码:

    nextFlag = (String)FacesUtil.getMapValue("hideNext");
    prevFlag = (String)FacesUtil.getMapValue("hidePrev");

字段
nextFlag
prevFlag
仍然为空。它们有getter和setter方法。我使用的是JSF2.2ver。请帮我解决这个问题。

你确定
FaceUtil
getApplicationMap()
部分吗?当我接触外部上下文时,需要从请求映射中检索值:

Map<String, String> pMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
Map pMap=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
在您的情况下,
pMap
应该包含一个键
hideNext

试试看 (字符串)context.getExternalContext().getRequestParameterMap().get(parameterName); 就你而言 parameterName可以是nextFlag或prevFlag

并不打算将自定义请求参数添加到表单submit中。它的目的是在回发中记住已经定义的bean属性。要添加自定义请求参数,您应该在命令组件中使用
,或者改为使用“纯香草”

所以,所以


大概


无论哪种方式,这些值都位于请求范围的bean中,可以作为

@ManagedProperty("#{param.prev}")
private String prev;

@ManagedProperty("#{param.next}")
private String next;
或者在范围更广的bean中

String prev = externalContext.getRequestParameterMap().get("prev");
String next = externalContext.getRequestParameterMap().get("next");

请注意,您将请求参数与应用程序范围的属性混淆了。这是一个严重的混乱,证明你不知道自己在做什么。我强烈建议您暂停一下,再次阅读基本的JSF教程

我尝试了:Map pMap=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();nextFlag=pMap.get(“hideNext”);prevFlag=pMap.get(“hidePrev”);但它是闲置的。你说的“闲置”是什么意思?从映射中获取nextFlag和prevFlag变量后,它们是否仍然为空?奇怪的是,您能否查看从浏览器发出的请求中发送的内容(使用类似Firebug的工具)?浏览器是否提交了这些值?只是随便看看:这些输入字段是否包含在中?它也不起作用:(我尝试了nextFlag=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“hideNext”);prevFlag=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“hidePrev”);使用firebug inspect元素在浏览器上呈现jsf页面时,请检查是否打印了hidePrev或hideNext的值。这对我帮助很大。谢谢。
String prev = externalContext.getRequestParameterMap().get("prev");
String next = externalContext.getRequestParameterMap().get("next");