乘以一种形式提交。超过1个以一种形式提交。或者在1个JSP中有一个以上的表单

时间:2012-05-04 14:41:00

标签: java forms jsp servlets submit

我在做网络应用程序。我编辑数据时遇到问题

我想像这样创建smth

my idea

我希望你能帮我找到办法。我发现了下一个变种,但我不知道人们通常会这样做。

  1. 以一种形式提交。
  2. 超过1个以一种形式提交。
  3. 或者1个JSP中的一个表单
  4. 我不应该使用任何框架。没有javascript。

    由于

    好的,如果它有助于理解我想要在servlet上获得什么 我展示了selvlet的一部分

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            String page = new String();
            Command command = CommandFactory.getCommand(request);
    
            page = command.execute(request);
            if (page != null) {
                RequestDispatcher dispatcher =
                        getServletContext().getRequestDispatcher(page);
                dispatcher.forward(request, response);
            }
              ....
    } 
    

    和CommandFactory

    public static Command getCommand(HttpServletRequest request){
            Command current = new NoCommand();
    
            String action = request.getParameter("command");
    
            if(action == null || action.isEmpty()){
                return current;
            }
    
            try{
                CommandEnum currentState = CommandEnum.valueOf(action.toUpperCase());
                current = currentState.getCurrentCommand();           
            }
    ...
    }
    

    和CommandEnum

    public enum CommandEnum {
    
        EDIT_QUESTION {
    
            {
                this.command = new EditQuestionCommand();
            }
        };
    } 
    

    特别是命令我做了一些业务逻辑

    请帮助我找到从jsp值获取的方式as command =“delete”。单一提交我使用隐藏字段。我们如何为几个按钮做同样的事情?

2 个答案:

答案 0 :(得分:1)

您可以在一个表单中使用任意数量的提交按钮。但请将它们命名为唯一,以便您可以轻松识别单击的按钮。服务器不会收到未单击的名称,值对按钮。您可以轻松找到单击的按钮作为请求参数。使用它可以实现您的要求。

示例HTML

<form>
 <input type="submit" name="s1" value="S1"/><br/>
 <input type="submit" name="s2" value="S2"/>
</form>

点击其中任意一个按钮,您会看到查询字符串为?s1=S1?s2=S2

更新1
您可以为所有提交按钮使用相同的名称,并且要唯一标识,它们必须具有不同的值。

<input type="submit" name="modeOfAction" value="Delete"/><br/>
<input type="submit" name="modeOfAction" value="Update"/>

更新2
如果你真的不在乎每个按钮的,那么最好为每个提交按钮使用唯一的名称。

<input type="submit" name="delete" value="Удалить (Err! I don't know what this text is!)"/><br/>
<input type="submit" name="update" value="Update"/>

答案 1 :(得分:0)

有一段时间确实是可选的JavaScript意味着:在没有JavaScript的情况下优雅地接受。对于小型设备,人们可能会认为这个位置可能会再次得到加强,但是:

  • HTML表单的使用受到限制,如上图所示。
  • DOM使用,就像AJAX调用更新页面的一部分一样,需要JS。
  • 使用jQuery等库的JavaScript用户界面可能性(效果,表格排序,分页,主题,验证)。

我现在仍然可以获得command=edit:编写一个转换请求参数的 servlet 过滤器。例如,将参数 command- NAME = TEXT 转换为 command = NAME