Struts2:将输入数组读取到动作中

发布于 2024-07-26 10:56:21 字数 542 浏览 8 评论 0原文

我试图将一组输入获取到我的操作类中,但它总是返回 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;
    }
}

我做错了什么?

I'm trying to get an array of input into my action class but it always returns null;

Here's the HTML for the input

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

and here's the class for the action

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

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

What am i doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

千里故人稀 2024-08-02 10:56:21

您不应该需要方括号。

<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" />

这应该填充您的操作的“sentdate”列表。

You shouldn't need the square brackets.

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

would render the following html

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

This should populate the 'sentdate' List of your Action.

若水般的淡然安静女子 2024-08-02 10:56:21

Struts 应该填充 List,但没有:)
这个问题更好的解决方案是在Struts操作类属性中使用String而不是List。
如果您提交表单,

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

您将在“私人字符串发送日期”中重新接收:1,2
你可以用逗号分隔符分割这个字符串并给你列表..

Struts should populate List but don`t :)
The better solution of this problem is to use String instead List in Struts action class properties.
If you submit form with

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

you will reseive in "private String sentdate" this: 1,2
and you can split this string with comma delimiter and give you List..

莫言歌 2024-08-02 10:56:21

您应该使用 < /a> 标签。

You should use the <s:select> tag.

手长情犹 2024-08-02 10:56:21

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

Is it even making it to the Action? I suggest using an HTTP listener like Fiddler, or IBM Page Detailer, so that you can see what, if anything, is even being sent to the server.

拥有 2024-08-02 10:56:21

请在您的操作中考虑调试语句以查看返回的结果。 我在想类似在你的 Action 顶部的东西:

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 代码。

Please consider a debug statement in your action to see what you get back. I'm thinking something like at the top of your Action:

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);
  } 
}

And I think it would be better if you use the real HTML in your sample. The " + i + " thing
is not HTML and I can't see from here how that is rendered to HTML. It's probably allright but I prefer to see the HTML code as the browser sees it.

爱你是孤单的心事 2024-08-02 10:56:21

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

as Stanimir told even the "value" attribute is not required. Just sending the parameters with the same name is enough. In the serverside we will get the list of string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文