2012-06-05 192 views
0

我不知道如何将这个scriptlet代码重新编码为JSTL/EL taglib。这些陈述非常简单,但它使用会话数据并创建了一些我不知道如何在JSTL/EL中执行的新对象。是否有可能重新编码到JSTL/EL或我需要把它放在一个预处理servlet中?如果我需要预处理servlet,那么我仍然不知道如何管理,因为没有针对此视图的特定请求处理程序,只能访问用于将会话对象填充到我们的jsp页面的网页。我怎样才能把这个改写成JSTL/EL?将此scriptlet代码转换为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()); 
%> 

回答

1

是的,任何你可以写在脚本中的东西都可以写成EL/Custom Tags

有两种方式:

  • 改变所有控制器类作为使用豆类和使用EL写上面的代码。
  • 移动上述代码自定义标记和消除的scriptlet
0

JSTL被intented控制HTML生成的流动。但是这个scriptlet不会产生任何HTML,因此用JSTL替换是完全没有问题的。

确实需要一个预处理servlet。我只是不明白你的意思到底是什么

我仍然不知道如何管理,因为对于这种观点没有具体的请求处理程序,只对网页的访问用于填充会话对象我们的jsp页面

但它应该是有问题的JSP文件移动到/WEB-INF文件夹,以便它永远不能被直接访问和创建被映射所需的URL模式并执行一个servlet的问题在doGet()方法中工作,最后转发到期望的JSP。假设JSP文件是/page.jsp并且已被重定位到/WEB-INF/page.jsp,那么该servlet将如下所示:

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

}