2012-06-29 97 views
0

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

例如,在这里我可以简单地检查从这个<form> POST数据对于任何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的解决方案。

+0

每个元素都应该有一个与其关联的ID。 – JonH

+0

正确,但是您无法从POST数据获取'id'值,您能吗? (在此之前,我自己并没有用JSP编码)。另外,如果它们是动态的,我仍然不知道要查找什么'id'值。 – craigpatik

回答

0

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

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

然后在你的Servlet,寻找与这个前缀值通过调用ServletRequest.getAttributeNames()

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一个体面的指导创建自定义标签。