gpt4 book ai didi

java - 如何在 Struts 2 中处理表单上的索引属性按钮

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:43 24 4
gpt4 key购买 nike

我需要实现一个表,其中每行都有用户希望作为一个整体提交的可编辑信息,但每行上都有按钮可以立即删除该行。因为我关心整个表单并且表单不能嵌套,所以接收按钮按下的操作可能必须将其作为索引属性处理,所以这就是我构建它的方式。

我目前正在做的是通过 Long 进行索引。

我的 JSP 呈现以下 HTML:

<input type="submit" value="Remove" name="removeButtons[## numbers go here ##]" />

在我的操作类中,我公开并使用该属性,如下所示:

private Map<Long, String> removeButtons = new HashMap<Long, String>();
public Map<Long, String> getRemoveButtons() {
return removeButtons;
}

// Later when the action is called
for(Long button : removeButtons.keySet()) {
// this only ever returns nothing or the one button that was pressed
}

这对于数字索引来说非常有效。

我现在需要对另一个表再次执行此操作,但行是使用 String 进行索引的。将 Long 转换为 String、在方括号内添加或不添加引号、将方括号更改为圆括号...似乎没有任何效果。

我已经知道如何使其与编号索引一起使用,并且我能够通过向每行添加数字索引值来实现它,但是,我想知道如何使用 MapString 键来实现它。

或者,有没有更好的方法来实现我想要做的事情(单个表单上的任意多个按钮)?

最佳答案

如果您想在索引中使用引号,则需要此 getter。它允许使用 MapString 键,并且您应该在索引中使用引号,让 OGNL 使用字符串值作为键并评估相应的 getter。

private Map<String, String> removeButtons = new HashMap<>();
public Map<String, String> getRemoveButtons() {
return removeButtons;
}

例如

<s:hidden name="removeButtons['0']" />
^ ------ //the string key
<s:submit value="Remove" />

或使用字符串变量或操作的属性

<s:set var="idx" value="'0'"/>
^ ------ //the string key
<s:hidden name="removeButtons[%{#idx}]" />
<s:submit value="Remove" />

编辑:

谁知道您将为不通过默认接受模式的参数使用非标准键。您的参数名称如 “removeButtons['GN 00501.013']”

使用模式 "\\w+((\\['\\w+((\\s\\w+)|(\\.\\w+))*'\\]))*"params 拦截器的 acceptParamNames 参数来克服硬编码模式,如 this 中所做的那样回答。

关于java - 如何在 Struts 2 中处理表单上的索引属性按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com