【问题标题】:Struts2: reading an array of input into an actionStruts2:将输入数组读入动作
【发布时间】:2009-07-07 02:40:25
【问题描述】:

我正在尝试将一组输入输入到我的操作类中,但它总是返回 null;

这是输入的 HTML

<input class="activityInput" type="text" name="sentdate[" + i + "]" value="1" />
<input class="activityInput" type="text" name="sentdate[" + i + "]" value="2" />

这是动作的类

public class ActivityAction extends ActionSupport{
    private List sentdate;
    public List getSentdate() {
    return sentdate;
    }

    public void setSentdate(List sentdate) {
        this.sentdate = sentdate;
    }
}

我做错了什么?

【问题讨论】:

    标签: text input struts2


    【解决方案1】:

    你不应该需要方括号。

    <s:textfield name"sentdate" value="1" />
    <s:textfield name"sentdate" value="2" />
    

    将呈现以下 html

    <input type="text" name="sentdate" value="1" />
    <input type="text" name="sentdate" value="2" />
    

    这应该会填充您的操作的“发送日期”列表。

    【讨论】:

      【解决方案2】:

      Struts 应该填充 List 但不要 :) 这个问题更好的解决方案是在Struts的动作类属性中使用String而不是List。 如果您使用

      提交表单
      <input type="text" name="sentdate" value="1" />
      <input type="text" name="sentdate" value="2" />
      

      您将在“private String sentdate”中重新获取:1,2 你可以用逗号分隔这个字符串并给你 List..

      【讨论】:

        【解决方案3】:

        您应该使用&lt;s:select&gt; 标签。

        【讨论】:

          【解决方案4】:

          它甚至参加了行动吗?我建议使用 Fiddler 或 IBM Page Detailer 之类的 HTTP 侦听器,这样您就可以看到正在发送到服务器的内容(如果有的话)。

          【讨论】:

            【解决方案5】:

            请考虑在您的操作中使用调试语句,看看您会得到什么。我正在考虑类似于您的操作顶部的内容:

            Enumeration parameterNames = request.getParameterNames();
            while (parameterNames.hasMoreElements()) {
              String currentParameterName = (String) parameterNames.nextElement();
              String[] values = request.getParameterValues(currentParameterName);
              for (String value : values) {
                logger.debug("Parameter " + currentParameterName + " has value " + value);
              } 
            }
            

            我认为如果您在示例中使用真正的 HTML 会更好。 “ + i + ”的东西 不是 HTML,我无法从这里看到它是如何呈现为 HTML 的。可能没问题,但我更喜欢浏览器看到的 HTML 代码。

            【讨论】:

            • 哈哈。那是我的问题。我忘了把 " + i + " 改成 \"" + i + "\"
            【解决方案6】:

            正如 Stanimir 所说,甚至“值”属性也不是必需的。只需发送具有相同名称的参数就足够了。在服务器端,我们将获取字符串列表。

            【讨论】:

              猜你喜欢
              • 2023-03-27
              • 1970-01-01
              • 2011-01-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多