0

name当我知道每个按钮的值时,我知道如何检测单击了哪个提交按钮。但是如果names 是动态的或由另一个组件定义的呢?

例如,在这里我可以简单地检查 POST 数据<form>中的一个alphabravo

<form>
  <input type="submit" name="alpha" value="Alpha">
  <input type="submit" name="bravo" value="Bravo">
</form>

但这只是因为我知道我应该寻找那些名字。

是否有处理此类情况的最佳实践?(也许通过渲染一个元素<input type="hidden" name="submit-button-names" value="dynamic_name1|dynamic_name2|etc">。)我想要一个不需要 JavaScript 的解决方案。

4

2 回答 2

0

假设您可以控制显示这些按钮的 JSP,只需在按钮名称前加上您可以在 POSTed 数据中查找的字符串即可。例如,将“dynamicbutton_”添加到所有这样的名称

<form>
  <input type="submit" name="dynamicbutton_alpha" value="Alpha">
  <input type="submit" name="dynamicbutton_bravo" value="Bravo">
</form>

然后在您的 Servlet 中,通过调用ServletRequest.getAttributeNames()查找具有此前缀的值

于 2012-06-29T13:00:57.420 回答
0

您可以编写一个自定义标签,根据您提供给标签的参数列表为表单设置不同的输入。您最终会得到如下所示的 HTML:

<form method="POST" action="SelectColour.do">
    <p>Select your favorite colour: </p>
    <formTags:select name='colour' size='1' optionsList='${applicationScope.colourList}'/>
    <input type="SUBMIT" value="Click here to submit">
</form>

这是创建自定义标签的不错指南。

于 2012-06-29T13:15:39.443 回答