Struts2 + getParameterValues()

时间:2011-08-01 19:49:20

标签: java-ee struts2

我能够在Struts中使用它,但是在Struts2中我无法理解问题是什么,我得到了null。

我的行动代码:

    String[] stuff = request.getParameterValues("stuff");

    if (stuff != null) {

        for (int i = 0; i < stuff.length; i++) {

            Integer id = new Integer(stuff[i]);

            System.out.println("stuff id: " + id);

            Stuff stuffObj = stuffService.find(id);

            System.out.println("stuff name: " + stuffObj.getStuffName());
        }
    }

我的JSP代码:

<s:form action="add-menus" method="POST" enctype="multipart/form-data" theme="simple">

Stuff <s:checkboxlist name="stuff" list="stuffList.{stuffName}"/>

</s:form>

我也使用了这个方法,使用setter和getter,同样的事情,我从JSP获得null结果,这是否适用于Struts2?的 P.S。我正在尝试获取用户选择的复选框

4 个答案:

答案 0 :(得分:4)

我建议在你的struts动作类中实现ParameterAware。这将允许您将servlet请求参数作为映射遍历:

public class ActionParam extends ActionSupport implements ParameterAware { 
    private Map<String, String[]> paraMap;

    @Override
    public void setParameters(Map<String, String[]> parameters) {
        this.paraMap= parameters;
    }
    ...

    for (Iterator<String> it = params.keySet().iterator(); it.hasNext();){
        String key = it.next();
        if (key.startsWith("stuff") && (map.get(key)!=null && !map.get(key).isEmpty())) {
             String[] stuff = map.get(key);
             // do magic
        }
    }
}

答案 1 :(得分:2)

我不确定你要做什么,并且为什么要使用它。

String[] stuff = request.getParameterValues("stuff");

Struts2具有开箱即用的功能,可以将数据传输到您的操作类/ bean,所有这些都是您的操作类中备受推崇的setter方法。

例如,你在jsp中有这个复选框列表:

<s:checkboxlist label="What's your favor color" list="colors" 
name="yourColor" value="defaultColor" />

在你的动作类中你只需要这样的东西

private String yourColor;

public void setYourColor(String yourColor) {
    this.yourColor = yourColor;
}

如果选中了多个选项,则可以通过String对象存储它。

答案 2 :(得分:1)

嗯,比我想象的要容易,Struts2真的是一个强大的框架,有些东西看起来比你想象的要简单。通过将“stuff”声明为

,我能够获得选中的框
List<String> stuff; 

并且瞧,这里我们有所选框的列表。哦,是的,以及getter和setter方法。就是这样。

答案 3 :(得分:0)

我使用此代码来获取复选框中的值&#39;价值领域。这些复选框的ID为field id = "Checkbox"String[]值仅包含勾选复选框的值。 此类扩展ActionSupport并实现HttpServletRequestHttpServletResponse

public String execute(){
    HttpServletRequest request = ServletActionContext.getRequest();
    this.setServletRequest(request);
    return "success";
}
public void setServletRequest(HttpServletRequest request) {
    String[] values= request.getParameterValues("Checkbox");}