繁体   English   中英

Struts2:将参数传递给动作类不起作用

[英]Struts2: Pass parameter to the action class does not work

我正在使用 struts 2.3.24

我想将一些参数传递给动作类。 这是我的链接。

<a id = "errorOid" 
 type = "submit"
 href = "<s:url action="SortIssue"><s:param name="sortField" value="ISSUE_OID"/></s:url>">
    Error Oid
</a>

当我单击链接时,它转到操作方法,但 sortField 始终为空。

这是我的行动:

<action name="SortIssue" method="sortIssue" class="foo.bar.IssueAction">
    <result name="success">/WEB-INF/issue.jsp</result>
    <result name="input">/WEB-INF/issue.jsp</result>
    <result name="login" type="redirectAction">Login</result>
    <interceptor-ref name="user-submit" />
</action>

这是单击链接时调用的方法。

public String sortIssue() throws ServiceFatalException,ServiceExpectedException{
        Log.error(this,"################## inside sort ###################"+sortField);
        return SUCCESS;
    }

我的问题是:

如何获取jsp传递的参数?

单击链接后是否可以获取隐藏参数?

注意:当我在迭代器中使用它时,传递参数的东西很好。

标签语法文档中所述:

值是一个对象!

大多数情况下,value 属性是自动设置的,因为 name 属性通常会告诉框架调用哪个属性来设置值。 但是,如果有理由直接设置值,请注意value 是 Object 而不是 String (警告)由于 value 不是字符串,因此传递给 value 的任何内容都被评估为表达式 - 而不是字符串文字。

应该是错的!

 <s:textfield key="state.label" name="state" value="ca"/>

如果向文本字段传递值属性“ca”,则框架将查找名为getCa()的属性。 一般来说,这不是我们的意思。 我们的意思是传递一个文字字符串。 在表达式语言中,文字放在引号内

以正确的方式传递文字值

<s:textfield key="state.label" name="state" value="%{'ca'}" />

另一种方法是使用成语value="'ca'" ,但在这种情况下,建议使用表达式表示法。

[...]

这意味着当您编写value="ISSUE_OID"时,Struts 在值堆栈中搜索名为ISSUE_OID的对象,在 Action 中搜索方法getISSUE_OID()等等......

如果你想传递一个字符串文字,你可以使用value="%{'ISSUE_OID'}" ,或者将你的值放在标签的 HTML 正文中,因为 HTML 正文没有被评估,你放在那里的所有东西都会变成一个字符串。

然后在你的情况下:

<s:param name="sortField" value="%{'ISSUE_OID'}"/>

或者

<s:param name="sortField">ISSUE_OID</param>

像这样试试

<s:url id="errorOid" action="sortIssue">
   <s:param name="sortField">ISSUE_OID</s:param>
</s:url>
<s:a href="%{errorOid}">Error Oid</s:a>

有关param的更多理解,请参见下文

情况1

<s:param name="sortField">ISSUE_OID</s:param>

该值作为java.lang.String对象评估为值堆栈

案例2

<s:param name="sortField" value="ISSUE_OID"></s:param>

该值作为java.lang.Objec t 对象评估为值堆栈。 有关详细信息,请查看此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM