1

I try to send url parameter to Action class as described here: How to access url parameters in Action classes Struts 2

If I do like next, it works and I can get pageLevel in Action class

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

But next does not work

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

And this does not work too

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

I get error

SEVERE: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /start.jsp (line: 86, column: 0) According to TLD or attribute directive in tag file, attribute action does not accept any expressions

Jsp page contains

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

How can I do it?

Community
  • 1
  • 1
andy007
  • 907
  • 1
  • 15
  • 41

2 Answers2

2
  1. Have a 'level' property in your index action with its getter an setter

Something like:

public class Index extends ActionSupport {

    private String level;

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

    public void setLevel(String level) {
        this.level = level;
    }
}
  1. Set 'level' as a hidden parameter in the form.

Assuming your action name is "index" and the request parameter is "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>
1

Try this

<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>
xrcwrn
  • 5,339
  • 17
  • 68
  • 129