Javascript 如何使用js文件中的消息资源

Javascript 如何使用js文件中的消息资源,javascript,java,jsp,struts,static-content,Javascript,Java,Jsp,Struts,Static Content,有人能给我解释一下这条线是干什么的吗 jsp /javascript/generic/messages.js 有没有其他办法 我有一个错误,我的jsp没有用这一行编译 如果我评论这行: 在my messages.js中: var tabMessages=新数组(); tabMessages['errors.invalid']=''; tabMessages['errors.maxlength']=''; tabMessages['errors.minlength']=''; tabMe

有人能给我解释一下这条线是干什么的吗


jsp
/javascript/generic/messages.js
有没有其他办法

我有一个错误,我的jsp没有用这一行编译

如果我评论这行:


在my messages.js中:


var tabMessages=新数组();
tabMessages['errors.invalid']='';
tabMessages['errors.maxlength']='';
tabMessages['errors.minlength']='';
tabMessages['errors.range']='';
tabMessages['errors.required']='';
tabMessages['errors.byte']='';
tabMessages['errors.date']='';
tabMessages['errors.double']='';
tabMessages['errors.float']='';
tabMessages['errors.integer']='';
tabMessages['errors.long']='';
tabMessages['errors.short']='';
tabMessages['errors.creditcard']='';
tabMessages['errors.email']='';
tabMessages['errors.numeric']='';
tabMessages['errors.filetype']='';
tabMessages['errors.accord.nonvalide']='';
tabMessages['errors.telephone']='';
tabMessages['errors.incorrectYear']='';
tabMessages['errors.DateCumulanNueldPassee']='';
tabMessages['errors.dateCumulAnnuelEnCours']='';
tabMessages['errors.DateCumulanNuelNonateInte']='';
tabMessages['errors.cumulanNueldJavalide']='';
tabMessages['negoliation.suppression.ristourne']='';
tabMessages['changement.champApplication.ristourne']='';
tabMessages['matrice.suppression.familleaSuivre']='';
tabMessages['alerte.suppression.simple']='';
tabMessages['alerte.suppression.complexe']='';
tabMessages['cumul.annuel.temporaire']='';
tabMessages['calcul.RetroSession.type.RetroSession.Different']='';
函数getMessage(键,arg0,arg1,arg2,arg3,arg4){
var res=tabMessages[key];
如果(arg0!=未定义){
res=res.replace(/\{0\}/g,arg0);
}
如果(arg1!=未定义){
res=res.replace(/\{1\}/g,arg1);
}
如果(arg2!=未定义){
res=res.replace(/\{2\}/g,arg2);
}
如果(arg3!=未定义){
res=res.replace(/\{3\}/g,arg3);
}
如果(arg4!=未定义){
res=res.replace(/\{4\}/g,arg4);
}
返回res;
}
js文件中的函数示例:

@Roman C:我很喜欢

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html:base ref="site" />

<html:html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<tiles:useAttribute id="title" name="title" />
<title><bean:message key="${title}" /> - v<bean:message
        key="numero.version" /></title>
<link rel="stylesheet" type="text/css"
    href="<html:rewrite page="/css/commun.css"/>">
<link rel="stylesheet" type="text/css"
    href="<html:rewrite page="/css/tiptip/tipTip.css"/>">
<link rel="icon" type="image/png" href="images/icone.ico" />
<script type="text/javascript"
    src="<html:rewrite page="/javascript/generic/jquery-1.2.3.pack.js" />"></script>
<script type="text/javascript"
    src="<html:rewrite page="/javascript/jquery.hotkeys.js" />"></script>
<script type="text/javascript"
    src="<html:rewrite page="/javascript/commun.js" />"></script>
<%--        <script type="text/javascript" src="<html:rewrite page="/javascript/generic/messages.js" />" ></script> --%>
<jsp:include page="/javascript/generic/messages.jsp" />
<script type="text/javascript"
    src="<html:rewrite page="/javascript/tiptip/jquery.tipTip.js" />"></script>
</head>
<body>
    <tiles:insert attribute="content" flush="false" />
</body>
</html:html>

-五
--%>

作为web.xml的一部分,这一行定义了一个servlet映射,或者URL或URL模式与将处理它的servlet之间的关系


在本例中,您声明对
/javascript/generic/messages.js
的请求将由名为
jsp
的servlet处理(使用web.xml中的
..
块定义)。这是一个奇怪的servlet名称,因为servlet和JSP页面是用Java代码呈现页面的不同方式。

servlet映射仅用于在请求通过该URL时调用servlet程序。指定Servlet类以外的类将不合适。众所周知,Servlet程序执行业务逻辑,并通过JSP文件重定向到输出

嗯,它将
js
文件映射到
jsp
。这并不好,因为您需要在js文件中编写jsp标记,并在服务器端呈现它们。但是js文件应该是静态的,并且由另一个servlet或静态内容提供者提供服务。如果您认为js是一个静态文件,而不应该在服务器端呈现JSP,那么您可以将文件
messages.js
的扩展名更改为
.JSP
。然后,您不需要使用这种servlet映射,但需要包含
messages.jsp
,以从服务器端呈现一些javascript内容。您可以使用
jsp:include
指令轻松地完成此操作。但是您需要在
messages.jsp
中添加
标记来呈现javascript

messages.jsp:

var tabMessages=新数组();
...
在另一个jsp中加载
messages.js
use



@hexafrance我有一个错误,我的jsp没有用这行编译,然后包括jsp本身。此外,JSP与servlet不是一回事。选择一个或另一个。尝试排除的验证jsp@Abdelhak当我排除这一行时,我的jsp正在工作,但我可以访问message.js中的函数,你是说不能access@Mercer你还能做什么?!在过去的6分钟里,我一直试图从你那里得到答案,但你仍然没有明确你的目标是什么。我不知道项目结构,因此如果包含的页面在同一文件夹中,它应该可以工作。编辑消息包并修改密钥,因为它们应该采用
US-ASCII
编码。
Uncaught ReferenceError: getMessage is not defined
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html:base ref="site" />

<html:html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<tiles:useAttribute id="title" name="title" />
<title><bean:message key="${title}" /> - v<bean:message
        key="numero.version" /></title>
<link rel="stylesheet" type="text/css"
    href="<html:rewrite page="/css/commun.css"/>">
<link rel="stylesheet" type="text/css"
    href="<html:rewrite page="/css/tiptip/tipTip.css"/>">
<link rel="icon" type="image/png" href="images/icone.ico" />
<script type="text/javascript"
    src="<html:rewrite page="/javascript/generic/jquery-1.2.3.pack.js" />"></script>
<script type="text/javascript"
    src="<html:rewrite page="/javascript/jquery.hotkeys.js" />"></script>
<script type="text/javascript"
    src="<html:rewrite page="/javascript/commun.js" />"></script>
<%--        <script type="text/javascript" src="<html:rewrite page="/javascript/generic/messages.js" />" ></script> --%>
<jsp:include page="/javascript/generic/messages.jsp" />
<script type="text/javascript"
    src="<html:rewrite page="/javascript/tiptip/jquery.tipTip.js" />"></script>
</head>
<body>
    <tiles:insert attribute="content" flush="false" />
</body>
</html:html>