2

アクション メソッドから別のアクションに転送する前に、URL パラメーターを追加したいと考えています。HttpServletRequest には getParameter() メソッドがありますが、setParameter() メソッドはありません。setAttribute() があることは知っていますが、それを URL の一部にする必要があります (?something=something&some2=some2 のように)。フィルターを使用して実行できることはわかっていますが、このタスクではやり過ぎです。

基本的に、そのパラメーターが設定されたときにページ上の何かを変更する外部管理フィルターがあります。ページの色が URL パラメータの一部として渡されるとしましょう。そのパラメーターが存在する場合、サーブレット フィルターがそれを取得し、そのページの色を変更します。私はそれが非常に奇妙な方法であることを知っていますが、それが彼らがここで設定した方法です.

URLパラメーターをアクションURLに追加することにより、Javaスクリプトベースのフォーム送信を使用して機能させる方法を知っています(つまり、「/someAction.do?color=red」)。しかし、一部のアクションでは、実際にはコード内で action.forward("action_name") を実行します。どうしようと思っていた方へ。

Struts 1.2でそれを行う方法を知っている人はいますか?

4

2 に答える 2

7

簡単に言えば、それは不可能だということです。リクエストパラメータは、HTTPリクエストからのものであると想定されています。ServletFilteraとanの組み合わせを使用してそれらを偽造することができますがHttpServletRequestWrapper、それはStrutsの外にあります。何を達成しようとしているかによっては、より良い解決策があるかもしれません。それをもう少し説明したいですか?

アップデート

追加した詳細を使用して、これを試して、ニーズを満たしているかどうかを確認できると思います。

import org.apache.struts.action.ActionRedirect;
...
ActionForward forward = action.forward("action_name");
ActionRedirect redirect = new ActionRedirect(forward);
redirect.addParameter("color", "red");
return redirect;
于 2010-07-06T18:12:57.783 に答える
3

これは古くて受け入れられている投稿であることは知っていますが、(私のように) ストラットをアップグレードできない場合は、これが役立つかもしれませんhttp://www.coderanch.com/t/45890/Struts/Adding-parameters-struts-アクション

import org.apache.struts.action.ActionForward;
public class ParameterizedForward extends ActionForward
{
    public ParameterizedForward(ActionForward forward)
    {
        super(forward.getPath(), forward.getRedirect());
    }
    public void addParameter(String key, String value)
    {
        StringBuffer sb = new StringBuffer(getPath());
        if (key == null || key.length() < 1)
            return;
        if (getPath().indexOf('?') == -1)
            sb.append('?');
        else
            sb.append('&');
        sb.append(key + "=" + value);
        setPath(sb.toString());
    }
}

ParameterizedForward fwd = new ParameterizedForward(mapping.findForward("success"));
fwd.addParameter("name","jason");
fwd.addParameter("userLevel", "god");
return fwd;
于 2015-02-25T23:31:15.253 に答える