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

4jb9z9bj  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(137)

我使用的是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>

当我单击链接时,它转到action方法,但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传递过来的参数?
点击链接后是否可以获得隐藏参数?
注意:当我在迭代器中使用参数时,传递参数的工作很好。

idfiyjo8

idfiyjo81#

如标记语法文档中所述:

值是一个对象!

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

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

如果向文本字段传递值属性“ca”,则框架将查找名为getCa()的属性。通常,这不是我们的意思。我们要做的是传递文字String。在表达式语言中,文字放在引号内

以正确的方式传递常值

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

另一种方法是使用习惯用法value="'ca'",但在这种情况下,建议使用表达式表示法。
[...]
这意味着当您编写value="ISSUE_OID"时,Struts将在值堆栈中搜索名为ISSUE_OID的对象,在Action中搜索方法getISSUE_OID(),等等。
如果您要传递String常值,可以使用value="%{'ISSUE_OID'}",或将您的值放在标签的HTML主体中,因为HTML主体不会进行评估,您放在那里的所有内容都会变成String。
那么在你的情况下:

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

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

to94eoyn2#

这样试试

<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. Object对象计算为值堆栈。有关详细信息,请查看here

相关问题