经过多年避免使用JSF,我终于潜入水中,但在做最简单的事情时遇到了问题。在JSTL世界中,通过${requestScope['big-bad-invalid-name']}
进行名称连字符的引用很容易。但是,这似乎不适用于<ui:param>
(或者我只是从错误的对象开始 - 可能的问题)。
我有一个引用模板的简单文件:
<html xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="/WEB-INF/template/main.xhtml">
<ui:param name="require-data-main" value="/something" />
<ui:define name="content">...</ui:define>
</ui:composition>
</html>
可悲的是,我无法弄清楚如何引用我的参数,因为#{require-data-main}
会因连字符而变得怪异。我们尝过#{param['require-data-main']}
,#{viewScope['require-data-main']}
,#{pageScope['require-data-main']}
,#{applicationScope['require-data-main']}
。我的参数似乎不存在于任何地方。
更新#1 - 我创建了另一个没有连字符的参数(驼峰案例)。正如我上面所尝试的那样,没有什么能够解决价值。然而,普通#{requireDataMain}
做了。我已经编写了大量的JSP。所以我不太热衷于更改我的变量名称。我仍然很想知道如何用名字中的连字符引用参数。
有人看过我的座位吗?是否有另一种方法来检索参数?
答案 0 :(得分:-1)
JSF页面应该使用Managed Bean来访问您的Java代码。如果你的jsf页面有一个控制器类,你可以使用EL将其注入jsf:#{managedbean.field}
其中managedbean
是以下类:
@ManagedBean(name = "managedbean")
public class YourBean {
private String field;
//getter and setter for field
}
希望我能正确理解你的问题。