如何在Spring中从jsp表达式语言中调用java常量变量?
How to call java constant variables from jsp expression language in Spring?
我花了一天时间寻找正确的解决方案,但没有成功!
问题是如何使用 el ${bean.objectName} 从 jsp 调用 java 常量变量。最佳做法是什么?
我想知道这是否可行,我对 Spring 和 jsp 很陌生。
常量class:
public class RNConstant {
public static final String HELLO_WORLD = "Hello World again!";
public static final String DEFAULT_LOCALE = "id_ID";
public static final String CONTEXT_PATH_SOAP_SR = "soap.sr";
}
期望在 jsp 中用 EL
调用
<p>${RNConstant.HELLO_WORLD}</p>
我可以使用如下的 scriptlet 执行此操作,但如果它在 weblogic 中运行,我将无法正常工作。这适用于 apache tomcat v7 或 v8
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
...
...
<%= HELLO_WORLD %>
weblogic 错误
home.jsp:2:18: Syntax error on token "static", Identifier expected after this token
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
^-------------------------------------^
home.jsp:11:19: HELLO_WORLD cannot be resolved
Hello world! <%=HELLO_WORLD%>
^--------^
java版本:1.6
pom.xml
spring
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.2.8.RELEASE</org.springframework-version>
<org.springjs-version>2.0.5.RELEASE</org.springjs-version>
<org.springws-version>2.2.1.RELEASE</org.springws-version>
<org.springsecurity-version>3.2.3.RELEASE</org.springsecurity-version>
<jackson-version>1.9.10</jackson-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
Scriplet 问题已通过以下代码解决,RNConstant 的内容仍然相同。
<%@ page import="id.co.telkom.common.RNConstant" %>
...
...
<%= RNConstant.HELLO_WORLD %>
干杯,
亨德利
期望在 jsp 中用 EL
调用
<p>${RNConstant.HELLO_WORLD}</p>
EL 检查 bean 并将 HELLOWORLD
转换为 getHELLOWORLD()
因为规范说必须以这种方式访问属性,所以您必须创建一个 getter
否则常量的可见性将是限于 jsp 视图:
public class RNConstant
{
public final static String HELLO_WORLD = "Hello World again!";
public static String getHELLO_WORLD() {
return HELLO_WORLD;
}
}
如果无法创建 getter,请检查 this answer
保持导入语句简单
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
删除 RNConstant
后的“.*”。还要删除开头的静态词。
<%@ page import="id.co.telkom.common.RNConstant" %>.
要调用 HELLO_WORLD 常数,请使用
<p>${RNConstant.HELLO_WORLD}</p> <p>${RNConstant.HELLO_WORLD}</p>
我花了一天时间寻找正确的解决方案,但没有成功! 问题是如何使用 el ${bean.objectName} 从 jsp 调用 java 常量变量。最佳做法是什么?
我想知道这是否可行,我对 Spring 和 jsp 很陌生。
常量class:
public class RNConstant {
public static final String HELLO_WORLD = "Hello World again!";
public static final String DEFAULT_LOCALE = "id_ID";
public static final String CONTEXT_PATH_SOAP_SR = "soap.sr";
}
期望在 jsp 中用 EL
调用 <p>${RNConstant.HELLO_WORLD}</p>
我可以使用如下的 scriptlet 执行此操作,但如果它在 weblogic 中运行,我将无法正常工作。这适用于 apache tomcat v7 或 v8
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
...
...
<%= HELLO_WORLD %>
weblogic 错误
home.jsp:2:18: Syntax error on token "static", Identifier expected after this token
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
^-------------------------------------^
home.jsp:11:19: HELLO_WORLD cannot be resolved
Hello world! <%=HELLO_WORLD%>
^--------^
java版本:1.6
pom.xml
spring
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.2.8.RELEASE</org.springframework-version>
<org.springjs-version>2.0.5.RELEASE</org.springjs-version>
<org.springws-version>2.2.1.RELEASE</org.springws-version>
<org.springsecurity-version>3.2.3.RELEASE</org.springsecurity-version>
<jackson-version>1.9.10</jackson-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
Scriplet 问题已通过以下代码解决,RNConstant 的内容仍然相同。
<%@ page import="id.co.telkom.common.RNConstant" %>
...
...
<%= RNConstant.HELLO_WORLD %>
干杯,
亨德利
期望在 jsp 中用 EL
调用<p>${RNConstant.HELLO_WORLD}</p>
EL 检查 bean 并将 HELLOWORLD
转换为 getHELLOWORLD()
因为规范说必须以这种方式访问属性,所以您必须创建一个 getter
否则常量的可见性将是限于 jsp 视图:
public class RNConstant
{
public final static String HELLO_WORLD = "Hello World again!";
public static String getHELLO_WORLD() {
return HELLO_WORLD;
}
}
如果无法创建 getter,请检查 this answer
保持导入语句简单
<%@ page import="static id.co.telkom.common.RNConstant.*" %>
删除 RNConstant
后的“.*”。还要删除开头的静态词。
<%@ page import="id.co.telkom.common.RNConstant" %>.
要调用 HELLO_WORLD 常数,请使用
<p>${RNConstant.HELLO_WORLD}</p> <p>${RNConstant.HELLO_WORLD}</p>