0

このスクリプトレット コードを JSTL / EL taglib に再コーディングする方法がわかりません。ステートメントは非常に単純ですが、セッション データを使用し、JSTL / EL で行う方法がわからない新しいオブジェクトを作成します。これを JSTL / EL に再コーディングすることは可能ですか、それとも前処理サーブレットに入れる必要がありますか? 前処理サーブレットが必要な場合でも、このビューには特定のリクエスト ハンドラーがなく、セッション オブジェクトを jsp ページに入力する Web ページへのアクセスしかないため、管理方法がわかりません。これを JSTL / EL に書き換えるにはどうすればよいですか?

<%
    final Logger logger = Logger.getLogger("arendeprocess_grunduppgifter_visa.jsp");
    ArendeProcessPageController apc = new ArendeProcessPageController(request);
    GrunduppgifterPageController pc = new GrunduppgifterPageController(request);
    String arendeTyp = apc.getArendeTyp();
    boolean showSearch = false;
    int vectr = 0; // får bara användas i errormessages.jspf
    IFormData ifData = PandoraManager.getSessionData(session).getFormData();

    AnsokanInfo ansokanInfo = apc.getAnsokanInfo();
    PersonInfo editPerson = new PersonInfo();
    if(ansokanInfo != null && ansokanInfo.hasEditPersonInfo()) {
        editPerson = ansokanInfo.getEditPersonInfo();
    } else {
        editPerson.setFornamn(apc.getNyregPerson().getFornamn());
        editPerson.setEfternamn(apc.getNyregPerson().getEfternamn());
        editPerson.setForetag(apc.getNyregPerson().getForetag());
        //editPerson.setOrgnr(apc.getNyregPerson().getOrgnr());
        editPerson.setLandKod(apc.getNyregPerson().getLandKod());
    }
    if(apc.getLatestAction().equals("Namnsokning") && apc.getLatestActionCommand().equals("search")) {
        showSearch = true;    
    }
    List<PersonInfo> sokandeList = ansokanInfo.getSokandeList();
    List<PersonInfo> uppfinnareList = ansokanInfo.getUppfinnareList();
    List<PersonInfo> ombudList = ansokanInfo.getOmbudList();
    List<Prioritet> prioriteter = ansokanInfo.getPrioriteter();
    List<Deposition> depositioner = ansokanInfo.getDepositioner();
    request.setAttribute("request", request);
    request.setAttribute("ansokanInfo", ansokanInfo); 
    request.setAttribute("editPerson", editPerson);
    request.setAttribute("apc", apc);
    request.setAttribute("sokandeList", sokandeList);
    request.setAttribute("uppfinnareList", uppfinnareList);
    request.setAttribute("ombudList", ombudList);
    request.setAttribute("GrunduppgifterConstants", new GrunduppgifterConstants());
%>
4

2 に答える 2

0

JSTL は、HTML 生成の流れを制御することを目的としています。ただし、このスクリプトレットは HTML を生成しないため、JSTL に置き換えることはまったく問題になりません。

実際、代わりに前処理サーブレットが必要です。私はあなたが正確に何を意味するのか理解していません

このビューには特定のリクエスト ハンドラーがなく、jsp ページにセッション オブジェクトを設定する Web ページへのアクセスしかないため、管理方法はまだわかりません。

ただし、問題の JSP ファイルを/WEB-INFフォルダーに移動して、直接アクセスできないようにし、目的の URL パターンにマップされ、doGet()メソッドでジョブを実行して最終的に目的の JSP に転送するサーブレットを作成する必要があります。/page.jspJSP ファイルがに再配置されていると仮定すると/WEB-INF/page.jsp、サーブレットは次のようになります。

@WebServlet("/page.jsp")
public class PageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Put the original scriptlet code here.

        // Keep the following line untouched.
        request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    }

}
于 2012-06-05T13:50:07.957 に答える