首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts2 + getParameterValues()

Struts2 + getParameterValues()
EN

Stack Overflow用户
提问于 2011-08-01 19:49:19
回答 4查看 3.6K关注 0票数 2

我能够使它在Struts中工作,但是在Struts2中我不知道问题是什么,结果是我得到了null。

我的行动守则:

代码语言:javascript
复制
    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代码:

代码语言:javascript
复制
<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获得空结果,这是否与Struts2?P.S一起工作?我正在尝试获取用户选择的复选框

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-02 12:16:30

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

代码语言:javascript
复制
List<String> stuff; 

瞧,这里有所选的盒子的列表。是的,还有getter和setter的方法。就这样。

票数 1
EN

Stack Overflow用户

发布于 2011-08-04 13:53:41

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

代码语言:javascript
复制
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
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2011-08-02 01:14:41

我不知道你想做什么,也不知道你为什么要用这个。

代码语言:javascript
复制
String[] stuff = request.getParameterValues("stuff");

Struts2有开箱即用的功能,可以将数据传输到操作类/bean,您都是操作类中受人尊敬的setter方法。

例如,jsp中有以下复选框列表:

代码语言:javascript
复制
<s:checkboxlist label="What's your favor color" list="colors" 
name="yourColor" value="defaultColor" />

在你的行动课上,你需要这样的东西

代码语言:javascript
复制
private String yourColor;

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6903604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档