我的网络项目中需要有几个具有不同功能的按钮,但我不知道实现它的正确方法。 我这样做只是为了测试:
<input name="command" type="hidden" value="redirect"></input>
<input type="submit" name="page" value="Make order"></input>
<input type="submit" name="page" value="See bills"></input>
<input type="submit" name="page" value="See orders"></input>
然后在命令中我切换抛出页面名称的枚举以找出单击了哪个按钮。一个按钮应该将客户端重定向到另一页面,其他按钮应该调用自己的命令。
我知道后处理表单提交
是一种不好的做法,所以我正在寻找另一种方法来做到这一点。有人建议我使用 JS onclick
,但我没有任何经验,也找不到任何适合我的项目的简单示例。
已编辑
我有 ViewBillAction 和 ViewOrderAction 的 Action 类。我也有这样的类来定义所需的操作:
public class Redirect implements Action {
@Override
public String execute(TransferredData requestInformation) {
String pageName = requestInformation.getRequestParameter("page");
Action action;
switch (pageName.toUpperCase()) {
case "MAKE ORDER":
return JSPManager.INSTANCE.getProperty(JSPManager.ORDER_PAGE_PATH);
case "VIEW BILLS":
action = new ViewBillsCommand();
return action.execute(requestInformation);
case "VIEW ORDERS":
action = new ViewRequestsCommand();
return action.execute(requestInformation);
主要问题是我根本不知道如何处理 JS 中的按钮单击事件。但这是我应该这样做的方式,我将非常感激一个简单的例子。
最佳答案
type submit
表示您要将表单数据发送到服务器进行处理。
如果您不执行发布请求,则应该使用 button
而不是 submit
。
<input name="command" type="hidden" value="redirect"></input>
<input type="button" name="page" value="Make order"></input>
<input id="seeBillsButton" type="button" name="page" value="See bills"></input>
<input type="button" name="page" value="See orders"></input>
并使用javascript
/jquery
来处理按钮点击事件。
$("#seeBillsButton").click(function() {
alert("Handler for .click() called.");
});
已编辑 在服务器端,您应该有 3 个操作来处理这些请求。
- MakeOrderAction
- 查看账单操作
- 查看订单操作。
对于MakeOrderAction,您只想将用户重定向到下订单页面,通过javascript中的点击事件(或超链接)来处理此问题。
对于 ViewBillAction 和 ViewOrderAction,每个操作都绑定(bind)到一个 jsp 并在那里显示结果。您有两种方法可以实现这一目标。您可以为他们制作 2 个表格并分别提交相应的操作。或者您可以使用相同的表单,并通过单击事件检查用户单击了哪些内容,在 JavaScript 中处理并提交表单。结果 jsp 页面应在您的操作类中定义。
关于java - JSP 中的多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621830/