- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在将此参数发送到我的 struts 操作
cdata[1]=bar
在我的操作中,我对索引和值感兴趣。我为 CDATA
定义了一个 getter/setter 对作为 OGNL documentation建议:
public void setCdata(int index, String value){
LOG.info("setData; key="+ key +"; value="+ value);
// store index and value;
}
public String getCdata(int index){
return null; // don't really need a setter
}
这是我得到的异常:
2013-04-29 15:38:49,792 [http-apr-8080-exec-3] WARN com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn(CommonsLogger.java:60) - Error setting expression 'cdata[1]' with value '[Ljava.
lang.String;@4223d2a4'
ognl.OgnlException: target is null for setProperty(null, "1", [Ljava.lang.String;@4223d2a4)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2309)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.ASTChain.setValueBody(ASTChain.java:227)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
...
如果我定义了一个公共(public)成员变量 String[] cdata = new String[1000]
我在我的日志中没有看到任何异常,但我的 setter 也没有被调用。如果成员变量是私有(private)的,我会再次遇到另一个异常。
最佳答案
使用以下设置
List<String> cdata = new ArrayList<String>();
public List<String> getCdata() {
return cdata;
}
public void setCdata(final List<String> cdata) {
if (cdata == null) {
this.cdata = new ArrayList<String>();
} else {
this.cdata = cdata;
}
}
从 JSP 提交值,如 cdata[1]=value 等
唯一的要求是有 getters/setters。我已经测试了在 java 1.6 上运行的这个 Tomcat7。您也可以提交类似 cdata[0]、cdata[1] 的值
private Map<String, String> data = new HashMap<String, String>();
public Map<String, String> getData() {
return data;
}
public void setData(Map<String, String> data) {
this.data = data;
}
JSP可以有
<s:form action="indexProperty">
<h3>Test The Map</h3>
<input type="text" name="data['0']"/>
<input type="text" name="data['1']"/>
<s:iterator value="data.entrySet()" var="aData">
<s:property value="#aData.key" />-<s:property value="#aData.value" />
</s:iterator>
<input type="submit" name="submit" value="submit"/>
</s:form>
毫无问题地填充
关于java - OGNL 数组和列表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280300/
我需要使用OGNL从Java对象读取一些属性。对我来说,OGNL完全是新鲜事物。 OGNL的可用文档是OGNL的网站,这确实让我感到困惑。 因此,任何人都可以提供一个使用OGNL的简单HelloWor
在 OGNL 中,建议解析重用的表达式以提高性能。 在查询API时,我还注意到有一个compileExpression方法: 彻底搜索有关编译与解析的信息后,the only article I co
我发现 ognl.ExpressionSyntaxException: 格式错误的 OGNL 表达式: 添加客户 [ognl.ParseException: 在第 1 行第 5 列遇到““Custom
我正在使用 struts2.3.24 并尝试设置一个 OGNL 调用调用构造函数的演示 package ac.nz.unitec.struts2; public class User { privat
我有一个带有以下片段的 Struts 2 JSP 页面: 正确打印出 myVariable 的值. 现在,我想通过myVariable到我的操作中的一个方法,该方法根据 myVariable 的值计
我将在 Struts2 范围之外重用 OGNL 库。我有相当大的公式集,这就是为什么我想预编译所有公式: Ognl.parseExpression(expressionString); 但是我不确定预
我正在将此参数发送到我的 struts 操作 cdata[1]=bar 在我的操作中,我对索引和值感兴趣。我为 CDATA 定义了一个 getter/setter 对作为 OGNL documenta
我有一个通用的jsp,它负责打印一些值,这些值取决于参数。 例如,我有一个具有属性 color 的对象 car 和具有相同属性的对象 house,我想使用相同的 jsp 接收对象的名称作为参数。
我想在 Struts 2 应用程序的每个页面上显示一些常量,例如 APVERSION、APPNAME 和 APPREV。 根据这些要求,我认为将该信息放入 servletContext 并在部署应用程
%{control.current + #displayRows} 最终是我需要执行的语句。我将其放在 s:if 标记中,并使用 test 来查看该值是否在特定范围内。 最终,我得到的是字符串连接而不
我的要求是显示来自数据库的日期和状态消息,以告知来自数据库的日期是过去日期、当前日期还是 future 日期。 我正在显示数据库的日期 现在如何获取 OGNL 标签中的当前日期,我已经尝试过 我需
这个使用 OGNL 的简单程序返回一个空值列表,而不是 [A,B,D]。我已经尝试过 #root{#x.get(#this)} ,但仍然返回一个空值列表。为什么?谢谢。 import java.uti
我目前正在使用 Struts2(没有经验的开发人员)并且我一直在搜索但我找不到如何将 OGNL 表达式应用于存储在上下文中的变量。 问题是我需要从 Context 中检索一个参数并将其大写。到目前为止
要强制进行 OGNL 评估,可以使用 %{} 语法,但应该使用什么来禁用它? 考虑以下代码 - 发生的情况是在值堆栈上查找 viewItem,如果找不到,则返回空字符串。 likeButt
我想用 Ognl 重新实现以下 Java 代码: while((s=bufferedReader.readLine()) != null) System.out.println(s); 但是我不知道
我有一个带有 html 表单的 JSP 页面。我输入表单字段的值并单击提交按钮,控件将转到 Action 类。我的问题是,对于 JSP 页面中的每个字段,我是否需要在带有 getters 和 sett
我正在开发一个系统,用于将接收到的结构化消息动态映射到 Java 对象。目前我正在通过 XML 模式执行此操作,该模式具有以下典型格式: company.app.MyObject
下面的代码不是打印 session 日期,而是打印字符串本身,即 "%{#session.travelDate}"。 那么,问题是为什么这个值没有被评估? 最佳答案 OGNL 表达式在 HTML 标
使用 OGNL,您可以引用操作上下文对象,例如 #application、#session、#root、#action、#request、#parameters、#attr 以及 #context 的
我想知道如何在 OGNL 中获取请求语言环境? 现在我用 这必须假定初始值为“zh_CN”。 所以我需要知道如何在 OGNL 中获取请求语言环境。 谢谢 最佳答案 #request.locale 关
我是一名优秀的程序员,十分优秀!