【问题标题】:how to fully convert jsp scriptlet into jstl如何将jsp scriptlet完全转换为jstl
【发布时间】:2014-02-21 07:30:07
【问题描述】:

我是jstl的新手,谁能告诉我如何将下面的jsp和html代码转换为页面中没有scriptlet的完整jstl?我也很感激有关一些好的资源的建议,以学习 jstl 和高级 jsp 概念,例如 JSF 和带有 crud 示例的 spring。

这是来自http://javaknowledge.info/?p=478 的凝乳示例。我拿这个例子是因为我认为它是 100% 的 jstl 实现但我错了。

我的 IDE 是 netbeans。

<form method="POST" action='UserController' name="frmAddUser">
        <% String action = request.getParameter("action");
            System.out.println(action);
        %>
        <% if (action.equalsIgnoreCase("edit")) {%>
        User Name : <input type="text" name="uname"
                           value="<c:out value="${user.uname}" />" readonly="readonly"/> (You Can't Change this)<br /> 
        <%} else {%>
        User Name : <input type="text" name="uname"
                           value="<c:out value="${user.uname}" />" /> <br />
        <%}%>
        Password : <input
            type="password" name="pass"
            value="<c:out value="${user.password}" />" /> <br /> 
        Email : <input
            type="text" name="email"
            value="<c:out value="${user.email}" />" /> <br /> 

        <% if (action.equalsIgnoreCase("edit")) {%>
        Registration : <input
            type="text" name="dob"
            value="<fmt:formatDate pattern="yyyy/MM/dd" value="${user.registeredon}" />" readonly="readonly"/>(You Can't Change this)  <br />
        <%} else {%>
        Registration : <input
            type="text" name="dob"
            value="<fmt:formatDate pattern="yyyy/MM/dd" value="${user.registeredon}" />" />(yyyy/MM/dd)  <br /> 
        <%}%>
        <input  type="submit" value="Submit" />
    </form>

【问题讨论】:

  • 什么 Servlet 版本?

标签: java mysql jsp jstl crud


【解决方案1】:

几年前我从这些视频中学到了很多东西:

https://www.youtube.com/user/3n3xus/videos

太糟糕了,它是德语和日食。

你学习

  1. 如何编写自己的 JSTL 框架。
  2. 如何在 jsf 中编写和导航
  3. 使用richfaces。
  4. 如何使用 facelets。

【讨论】:

    【解决方案2】:

    只有两种类型的脚本:

    • 将当前操作打印到系统输出 - 没有 JSTL 替代方案
    • if-else 语句可以改写为

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>        
      <c:choose>
        <c:when test='${ fn:toLowerCase(param.action) eq "edit" }'>
          ...
        </c:when>
        <c:otherwise>
          ...
        </c:otherwise>
      </c:choose>
      

    【讨论】:

    • 不客气,请指定互联网上最好的 jstl/el 教程。没有“将当前操作打印到系统输出 - 没有 JSTL 替代方案”请指定
    • 我指的是System.out.println(action);如果你想从jsp访问静态方法,你必须将它们声明为jstl函数,但是在JSTL中没有为它准备好的标签。关于好的 jstl/el 教程?我可以推荐 Head first servlet 和 JSP,虽然它有点过时了。