我需要访问singleton类的方法来获取参数
Java代码调用的原型是:
SosConstant.getInstance().getParameter("type");
我有一组修改视图的参数,所以我需要直接从JSP访问这些数据
我该怎么写
<s:parameter value="...
和
<s:if test="..
使用这些数据?
答案 0 :(得分:1)
我解决了添加
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
经过大量搜索后,我的struts.xml。
我认为这些常数没有很好的记录。我在哪里可以在apache struts网站上找到它们?
答案 1 :(得分:0)
您可以通过设置action属性并提供getter方法来完成此操作。
private Object type;
public Object getType(){
return type;
}
在动作或其他初始化方法中
type = SosConstant.getInstance().getParameter("type");
然后在JSP中你可以像往常一样访问它
<s:property value="type"/>
或
<s:if test="type == 'some type'">
...
</s:if>
OGNL具有允许调用静态方法的语法,但出于安全原因禁止使用,因此默认情况下此设置处于关闭状态。要获取任何对象的实例,您需要创建该对象(在您的情况下不可能)或使用另一个返回实例的对象。操作对象实例最适合此目的。您只需创建一个返回对象实例的方法(在您的情况下为单例)。
public SosConstant getSosConstant(){
return SosConstant.getInstance();
}
然后你可以在JSP中使用它
<s:property value="sosConstant.getParameter('type')"/>
或
<s:if test="sosConstant.getParameter('type') == 'some type'">
...
</s:if>
只需迈出一步,但在OGNL中也是如此。