如何识别名称未知时单击了哪个提交按钮?

时间:2012-06-29 12:48:05

标签: forms jsp submit

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

例如,在这里,我只需检查此<form>的POST数据是alpha还是bravo

<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的解决方案。

2 个答案:

答案 0 :(得分: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()

查找具有此前缀的值

答案 1 :(得分: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>

Here's是制作自定义标签的合适指南。