gpt4 book ai didi

java - OGNL 数组和列表索引

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:18 25 4
gpt4 key购买 nike

我正在将此参数发送到我的 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] 的值

否则你可以使用 map

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com