我不知道我做错了什么,但我不能包括JSTL.我有jstl-1.2.jar,但不幸的是我得到了例外:
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:315)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:148)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1439)
at org.apache.jasper.compiler.Parser.parse(Parser.java:137)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) …Run Code Online (Sandbox Code Playgroud) 我想设置由<fmt:formatNumber>朋友使用的JSTL语言环境.我知道这是可能的<fmt:setLocale>,但我需要动态地(取决于从我的数据库中检索的用户数据)并且更喜欢Java代码 - 一个过滤器类,确切地说.
我认为将session属性设置javax.servlet.jsp.jstl.fmt.locale为我想要的Locale实例就可以了,但是它被忽略了:JSTL标签继续使用浏览器区域设置.
我确认没有相同名称的页面上下文或请求属性.
那么我做错了什么?或者我真的需要从JSP中做到这一点吗?
阅读JSTL代码,我发现了对a的引用,LocalizationContext并认为我需要设置一个.然而,我无法确切地弄清楚它如何适合图片或如何设置图片.
如何通过JSP/Servlet提供多语言支持?如何根据所选语言在运行时包含不同语言的静态数据?
我试图使用taglib从JSTL中读取"属性文件",但我无法访问它
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>
Run Code Online (Sandbox Code Playgroud)
我已经在web.xml中正确找到了tld文件,我确定这一点
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/lib/fmt.tld</taglib-location>
</taglib>
Run Code Online (Sandbox Code Playgroud)
属性文件名是msg.性能
<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
Run Code Online (Sandbox Code Playgroud)
我一直在
???error.more???
Run Code Online (Sandbox Code Playgroud)
而不是属性文件中的消息
我认为问题在于找到属性文件,或者在基本名称中
<fmt:bundle basename="msg">
Run Code Online (Sandbox Code Playgroud)
我应该在哪里找到属性文件,如何在代码中引用它?
感谢大家
我有以下index.jsp:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<fmt:setLocale value="ru_RU"/>
<fmt:setBundle basename="messages"/>
<html>
<head>
<title></title>
</head>
<body>
<h1><fmt:message key="login"/></h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和属性文件messages_ru_RU.properties:
login = ?????
Run Code Online (Sandbox Code Playgroud)
问题是我在输出中得到了垃圾unicode字符:
Ëîãèí
Run Code Online (Sandbox Code Playgroud)
更新
将.properies文件编码更改为UTF-8.最新产品:Ðогин
请帮助我,将其更改为正常的西里尔字母.
我正在寻找一种方法来在JSP页面输出时将字符串计算为el.(我想当它的toString()方法在引擎盖下调用???)
例如,在我的页面中,如果我这样做:
<title>${bean.title}</title>
Run Code Online (Sandbox Code Playgroud)
title将是bean的属性,它将返回一个字符串.我想在bean.title中存储其他EL表达式,以便对它们进行评估.
所以,如果bean.title =" This is the ${param.pageType} page",显然会在写入页面之前进行评估.
有没有办法做到这一点?
我想创建一个可以用两种语言查看的网站,一个LTR和一个RTL.这意味着所有内容都应以两种语言中的任何一种显示.
我的框架是Spring,我正在使用Tiles2,但我认为这个问题不是特定于框架的.
支持两种语言的显而易见的解决方案是将所有内容加倍(所有JSP,片段等),并获得适合您选择的语言的树的一部分.但这会在更改网站时导致问题(您可能忘记更新其他JSP),并且不可扩展(尝试为5或10种语言执行此操作).
我知道我可以使用属性文件来托管不同语言的字符串,但是我的网站将是一个庞大的spring:message标签集合,并且将更难维护(如果我有一个100行的段落会发生什么,这一切都进入一个属性行吗?)
是否有任何类型的框架,插件,其他,它解决了这个问题?有没有人遇到过这个问题的聪明解决方案?
我正在使用JSP编写一个网站.我希望网站有多种语言版本,所以我HashMap为我计划支持的每种语言创建了一个,并且通过map.get("identifier")其他一些代码来查找文本.
我遇到的问题是我之前通过使用format函数解决的问题(类似于printf许多语言),但这是另一种语言.
具体问题是,文本User performed action可能会出现Action was performed by user另一种语言(即术语可能会出现故障).
在过去,我做过类似的事情#translate("Welcome to the site, %s!", {"Username"}),然后使用语言的format功能替换%s用户名.我可以简单地使用String#replace但是我不能做#translate("Welcome to the site, %s! You last visited on %s!", {"username", "last visit"})像我想做的事情.
对不起,如果这是一个不好的解释 - 只需查看printfPHP之类的东西.
在Java中复制这样的东西的最佳方法是什么?谢谢您的帮助.
我在我的jsp页面中有这个: ${category.name_ENG} 它有"Car"作为值
但我在另一个变种中使用当地语言:${locale}.所以在我的jsp中我想根据locale变量显示汽车值.
我试过那些:
${category.name_${locale}}
${category['name_${locale}']}
${category['name_{locale}']}
Run Code Online (Sandbox Code Playgroud)
但他们都没有工作?任何帮助?
通常,使用JSTL和fmt在JSP中加载和使用资源包,但这需要始终使用语法<fmt:message key=""/>来访问该值.
当要本地化的文本看起来
<a href="url" title="message">很尴尬(尽管写入有效):
<a href="url" title="<fmt:message key="key"/>">
Run Code Online (Sandbox Code Playgroud)
并且很难使用范围的语法
<fmt:message key="key" var="var">
<a href="url" title="${var}">
</fmt:message>
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?我正在寻找像这样的东西
<a href="url" title="${messages.key}">
Run Code Online (Sandbox Code Playgroud)