1

私はウェブアプリケーションをやっています。また、データを編集するときに問題が発生します

このようなsmthを作りたい

私の考え

私がこれを行う方法を見つけるのを手伝ってくれることを願っています。私は次の変種を見つけましたが、人々は通常これを行うのでわかりません。

  1. 1つのフォームで複数の送信を行います。
  2. 1つのフォームに複数の送信。
  3. または1つのJSPに1つ以上のフォーム

そして、私はフレームワークを使うべきではありません。そしてjavascriptなし。

ありがとう

OK、サーブレットに何を取得したいかを理解するのに役立つ場合は、サーブレットの一部を表示します

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();
        }
    };
} 

そして特にコマンド私はいくつかのビジネスロジックを行います

command="delete"としてjsp値から取得する方法を見つけるのを手伝ってください。シングルサブミットでは、隠しフィールドを使用します。いくつかのボタンに対して同じことをどのように行うことができますか?

4

2 に答える 2

1

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"/>
于 2012-05-04T15:00:22.600 に答える
0

確かにオプションのJavaScriptが意味する時代がありました:JavaScriptが存在しないときに優雅に受け入れる。小さなデバイスでは、この立場が再び強化されるかもしれないと思うかもしれませんが、:

  • 上記のように、HTMLフォームの使用には制限があります。
  • ページの一部を更新するAJAX呼び出しのように、DOMの使用にはJSが必要です。
  • jQueryなどのライブラリを使用したJavaScriptユーザーインターフェイスの可能性(効果、テーブルの並べ替え、ページング、テーマ、検証)。

私は今でも、リクエストパラメータを変換するサーブレットフィルタをcommand=edit作成する方法を取得しています。たとえば、パラメータcommand- NAME = TEXTcommand= NAMEに変換します。

于 2012-05-05T15:34:46.073 に答える