我使用的是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传递过来的参数?
点击链接后是否可以获得隐藏参数?
注意:当我在迭代器中使用参数时,传递参数的工作很好。
2条答案
按热度按时间idfiyjo81#
如标记语法文档中所述:
值是一个对象!
大多数情况下,value属性是自动设置的,因为name属性通常会告诉框架调用哪个属性来设置值。但是,如果有理由直接设置值,请注意value是一个Object而不是String。(警告)由于value不是String,所以传递给value的任何内容都会被计算为表达式-而不是String文字。
也许错了!
如果向文本字段传递值属性“ca”,则框架将查找名为
getCa()
的属性。通常,这不是我们的意思。我们要做的是传递文字String。在表达式语言中,文字放在引号内以正确的方式传递常值
另一种方法是使用习惯用法
value="'ca'"
,但在这种情况下,建议使用表达式表示法。[...]
这意味着当您编写
value="ISSUE_OID"
时,Struts将在值堆栈中搜索名为ISSUE_OID
的对象,在Action中搜索方法getISSUE_OID()
,等等。如果您要传递String常值,可以使用
value="%{'ISSUE_OID'}"
,或将您的值放在标签的HTML主体中,因为HTML主体不会进行评估,您放在那里的所有内容都会变成String。那么在你的情况下:
或
to94eoyn2#
这样试试
有关
param
的更多信息,请参见下文该值作为java. lang. String对象计算为值堆栈
该值作为java. lang. Object对象计算为值堆栈。有关详细信息,请查看here。