java - 如何从facelet中获得隐藏的值(value)?

标签 java jsf jsf-2

我的 .xhtml 页面中有一些隐藏字段。

<h:inputHidden value="1" id="hidePrev"/>
.....
<h:inputHidden value="1" id="hideNext"/>

而且我无法从我的 JSF bean 中获取它们的值。

public class FacesUtil {
public static Object getMapValue(String key) {
    return FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(key);
}

public static void setMapValue(String key, Object value) {
    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(key, value);
}

}

我的bean代码:

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

字段nextFlagprevFlag仍然为空。他们有 getter 和 setter 方法。我正在使用 JSF 2.2 版本。请帮我解决这个问题。

最佳答案

<h:inputHidden>无意将自定义请求参数添加到表单提交中。它的目的是在回发过程中记住已经定义的 bean 属性。要添加自定义请求参数,您应该使用 <f:param>在命令组件或“普通 Vanilla ”<input type="hidden">相反。

所以,所以

<h:commandButton ...>
    <f:param name="prev" value="1" />
    <f:param name="next" value="1" />
</h:commandButton>

大概

<input type="hidden" name="prev" value="1" />
<input type="hidden" name="next" value="1" />
<h:commandButton ... />

无论哪种方式,这些值都位于请求范围的 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 教程。

关于java - 如何从facelet中获得隐藏的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828041/

相关文章:

javascript - 可能是 : javascript extract value from c:forEach tag?

java - ExpressionLanguage (EL) 是否允许使用 NULL 参数调用方法?

java - 由于错误 c00ce56e,无法完成操作

java - Hibernate 中 setCalendar 和 setCalendarDate 有什么区别?

java - notifyDataSetChanged 不更新 listView

java - 函数式编程(Streams)返回类型ArrayList java

jsf - 在不丢失当前 JSF 页面的 View 范围的情况下在新选项卡/窗口中打开链接

java - 在流口水中禁用严格模式

JSF xmlns URI 未在 IntelliJ IDEA 中注册

jsf-2 - Glassfish 3.1.2 Faces Servlet xhtml 未正确处理/缺少输出