【问题标题】:Struts 2: how to send url parameters in Action?Struts 2:如何在Action中发送url参数?
【发布时间】:2014-08-28 07:33:53
【问题描述】:

我尝试将 url 参数发送到 Action 类,如下所述:How to access url parameters in Action classes Struts 2

如果我喜欢下一个,它可以工作,我可以在 Action 类中获取 pageLevel

<s:form action="index?pageLevel=99">
    <s:checkboxlist label="Select" list="colors" name="yourColor" value="defaultColor" />
    <s:submit value="Submit" /> 
</s:form>

但是下一个不起作用

<s:form action="index?pageLevel=<%=level%>">

这也行不通

<c:set var="pageLevel" scope="page" value="<%=level%>" />
<s:form action="index?pageLevel=${pageLevel}">

我收到错误

严重:servlet jsp 的 Servlet.service() 抛出异常 org.apache.jasper.JasperException:/start.jsp(行:86,列:0) 根据标签文件中的 TLD 或属性指令,属性动作 不接受任何表达式

jsp页面包含

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

我该怎么做?

【问题讨论】:

  • 不要在表单的action 属性中使用脚本、参数以及在 S2 标记中使用 el 表达式。使用隐藏字段。
  • 您可以使用struts url标签在url标签内使用

标签: java struts2


【解决方案1】:
  1. 在您的索引操作中有一个“级别”属性,它的 getter 是一个 setter

类似:

public class Index extends ActionSupport {

    private String level;

    public String getLevel() {
        return this.getLevel();
    }

    public void setLevel(String level) {
        this.level = level;
    }
}
  1. 将“级别”设置为表单中的隐藏参数。

假设您的操作名称为“index”,请求参数为“pageLevel”:

<s:form action="index">
    <s:checkboxlist label="Select" list="colors" name="yourColor" value="defaultColor" />
    <s:hidden name="level" value="%{#parameters.pageLevel}" />
    <s:submit value="Submit" /> 
</s:form>

【讨论】:

  • nothingtodohere,好的,但是如果 Action 类返回 SUCCESS,我该如何设置请求参数?
  • 这个动作的结果是同一个页面吗?如果是这样,您可以使用级别属性值访问“级别”:
【解决方案2】:

试试这个

<s:form action="index">
    <s:checkboxlist label="Select" list="colors" name="yourColor" value="defaultColor" />
    <s:hidden name="pageLevel" value="%{pageLevel}"/>
    <s:submit value="Submit" /> 
</s:form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多