渡されたパラメーターに基づいてページに人をリダイレクトすることを完全な目的とするサーブレットがあります。ただし、ページにリダイレクトすると、ボタンをクリックすると、ページがランディング ページにリダイレクトされます。
コントローラ:
@WebServlet(name = "Case1Controller", urlPatterns = {"/C1Control"})
public class Case1Controller extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
String jsf = request.getParameter("jsf");
if(jsf.equalsIgnoreCase("V")) {
response.sendRedirect(response.encodeRedirectURL("AddVendor.jsf"));
}
if(jsf.equalsIgnoreCase("P")) {
response.sendRedirect(response.encodeRedirectURL("AddProduct.jsf"));
}
if(jsf.equalsIgnoreCase("O")) {
response.sendRedirect(response.encodeRedirectURL("POGenerator.jsf"));
}
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
利用方法:
< ul>
< m:MenuItem caption="Add Vendor" jsf="V"/>
< m:MenuItem caption="Add Product" jsf="P"/>
< m:MenuItem caption="Generate PO" jsf="O"/>
< /ul>
メニュー項目コントロール:
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="caption" required="true"/>
<cc:attribute name="jsf" required="true"/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<h:outputLink value="/Info5059Case1/C1Control?jsf=#{cc.attrs.jsf}"> #{cc.attrs.caption}</h:outputLink>
</cc:implementation>