2

如何将 JSP 变量转换为 Struts2 变量?

我尝试了以下方法:

<%=scoredDocument%>
<s:push value="scoredDocument"/>
<s:push value="#scoredDocument"/>
<s:push value="%{scoredDocument}"/>
<s:push value="${scoredDocument}"/>
<s:push value="#page.scoredDocument"/>
<s:push value="%{#page.scoredDocument}"/>

<display:column title="Study Code" sortable="true">
    <s:property value="id"/>

最常见的错误是

原因:标签'push',字段'value':您必须指定一个值才能推送到堆栈上。示例:人 - [未知位置]

4

2 回答 2

1

<s:push>必须附上<s:property>标签。还

<s:push value="#attr.scoredDocument">
    <display:column title="Study Code" sortable="true">
        <s:property value="id"/>
    </display:column>
</s:push>

#attr? WTF 支柱?它甚至没有记录!https://struts.apache.org/release/2.0.x/docs/jsp.html

于 2013-11-27T03:14:35.667 回答
1

push标记需要该属性value并且必须对其进行初始化,否则会显示 JSP 错误。与可以使用空字符串预初始化值的其他标记不同,JSP 不会抱怨。

OGNL 表达式在此属性中进行评估,就像在 Struts 标记的许多其他属性中一样,如果无法解析它返回的值null。该值对于push标签来说是不可接受的,并且会引发异常。该错误误导了通过 OGNL 表达式访问 scriptlet 变量值的不同尝试,不幸的是,这些方法都不起作用。

Scriptlet 表达式在与 Struts 标记一起使用时存在一个缺陷,您只能在标记主体中使用它并且它被转换为字符串。就像在这个例子中

<s:set var="scoredDocument"><%=scoredDocument%></s:set>

你不能对push标签做同样的事情。之后,您可以使用#scoredDocumentOGNL 表达式的字符串化版本。

于 2013-11-27T13:44:03.717 回答