【问题标题】:From scriptlet to Javabean从 scriptlet 到 Javabean
【发布时间】:2013-08-21 12:06:52
【问题描述】:

我的 JSP 中有以下 scriptlet:

<% for (int i=0; i<emailSettings.qualified_apn.length; i++) { %>
    var g ='<%= emailSettings.qualified_apn[i] %>'
    //some code
<% } %>

我将变量 emailSettings 移动到一个 bean 中...那么现在,我该如何更改循环?

【问题讨论】:

  • bean.getEmailSettings()?不应在 JSP 中使用 scriptlet。学习 JSP EL 和 JSTL。
  • 如何在EL和JSTL中编写上述代码?
  • 查看@MikO 的回答。请注意,qualified_apn 字段需要一个吸气剂。无论如何,您都不应该使用公共字段。还要考虑尊重 Java 命名约定:变量和方法中没有下划线。

标签: jsp jstl javabeans scriptlet


【解决方案1】:

您应该使用JSTL 来浏览列表,而不是使用被认为是very bad practice 的scriptlet...所有业务逻辑 应该封装到类中,并且JSP 应该只包含表示逻辑...

您应该将所有//some code 移动到Java 类中,一旦您将要在页面中显示的所有值收集到类中,您就可以像这样使用JSTL:

<c:forEach var="item" items="${emailSettings.qualified_apn}">
    <p>Item foo: ${item.foo}</p>
    <p>Item bar: ${item.bar}</p>
    ...
</c:forEach>

请记住,您必须将 JSTL 核心库导入到您的 JSP 中:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

还请注意,正如@JBNizet 所评论的,您需要为qualified_apn 类中的qualified_apn 字段添加一个getter(您永远不应该使用公共字段!)。还要考虑尊重 Java 命名约定:变量和方法中没有下划线(即qualifiedApn)。

我建议你开始阅读甲骨文的官方JSTL documentation。此外,您可以在网上找到许多关于 JSTL 的教程,只需谷歌搜索“JSTL 教程”,例如 tutorialspoint.com。

【讨论】:

  • 如何给变量 g 赋值?
  • @Benny:我代码中的变量item 正是你的变量g 的样子!标签 forEach 创建一个循环来浏览您的 emailSettings.qualified_apn 列表,并且在每次迭代中,var item 将包含列表的成员...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2012-12-17
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多