2010-11-09 45 views
0

我希望我的JSP页面根据请求中的值包含另一个页面。 所以我设置如下:动态导入JSP页面中的文件

request.setAttribute("chosenLang", "NL"); 
    RequestDispatcher dispatcher = request.getRequestDispatcher(address); 
    dispatcher.forward(request, response); 

当我到达“地址”页面我尽量做到以下几点:

<c:choose> 
    <c:when test="${chosenLang eq 'NL'}"> 
     <%@include file="/Localization/NL_Localization.jsp" %> 
    </c:when> 
    <c:otherwise> 
     <%@include file="/Localization/EN_Localization.jsp" %> 
    </c:otherwise> 
</c:choose> 

所以,我知道chosenLang发现“NL”属性,因为当我改变和标签之间的什么到它的作品,我看到测试得到在我的网页上提及,当我把2个值在那里,一个用于NL和一个用于其他语言,它也改变了..

虽然真正的错误,当我尝试使用该公司在Localization.jsp文件中的一个定义,像这样的字符串:

<% 
String welcomeStr="this is defining String variable"; 
%> 

而当我把这个字符串的地方倒在我的网页像

<%=welcomeStr%> 

我的IDE犯规警告我说,有什么东西错误。但是,当我编译和运行我得到以下错误:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 48 in the jsp file: /index3.jsp 
welcomeStr cannot be resolved 
45:      <li>My courses</li> 
46:      <li>My messages [1]</li> 
47:      <li>My details</li> 
48:      <li> <%=welcomeStr%></li> 
49:     </ul> 
50:    </div> 
51:    <div id="menuHolder"> 

所以,我在这里失踪? 或者用另一种方式做得更方便吗?

在此先感谢!

+1

这是功课吗?只是为了确定,因为这对于JSP中的i18n来说是完全错误的方法。 – BalusC 2010-11-09 13:46:31

+0

同意9更多去.. – 2010-11-09 13:47:26

回答

1

试试看ResourceBundle。这将允许您执行的操作是编写1个JSP文件,并且页面上的所有文字都将在属性文件中进行控制。这将避免你必须在你的jsp文件中编写逻辑来控制语言。

您的JSP页面可以从属性文件中读取,其中每个属性文件都会有您的用于不同语言/国家的文字。

有很多关于如何使用ResourceBundle的教程。这里有一个来自Oracle

+0

谢谢!我将从现在开始使用它,这是完美的! – Craimasjien 2010-11-11 08:43:25