Jua*_*des 3 javascript jsp struts2
我注意到struts 2框架的javascript客户端验证功能使用了struts2 JAR文件中的javascript文件.javascript文件显然只是通过使用框架中的标记以某种方式包含在JSP页面中.
如果我设法做到这一点,对于我在每个新的Web项目中总是复制的许多javascript库文件将非常有帮助,因为我将它们全部放在JAR文件中,然后每个项目都没有不同文件的副本(如你所知,这会造成很多麻烦).
谁知道他们是怎么做到的?
好吧,我从工作中抽出一些时间来研究框架是如何做到这一点的.事实证明,Struts 2有一个实现来提供静态内容.这是在配置文件struts.properties中由属性:struts.serve.static配置的.
如果该属性设置为true,则JSP页面中以路径/ struts /或/ static /开头的任何静态内容(javascript,css,images等)将由struts FilterDispatcher和其他名为DefaultStaticContentLoader的类提供.
例如:
<script language="JavaScript" type="text/javascript" src="struts/someScript.js"></script>
<script language="JavaScript" type="text/javascript" src="static/otherScript.js"></script>
Run Code Online (Sandbox Code Playgroud)
这两个javascript文件都将由Filter和ContentLoader提供.
默认情况下,ContentLoader类将仅在Struts 2核心JAR内的两个文件夹中查找所请求的文件:org.apache.struts2.static和template.
现在有一种方法可以使ContentLoader在其他地方进行查找,并在过滤器参数中的web.xml文件中进行配置,如下所示:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>packages</param-name>
<param-value>insert.your.package.with.static.content.here</param-value>
</init-param>
</filter>
Run Code Online (Sandbox Code Playgroud)
我花了很长时间才发现这个,关于这个功能的信息不多.如果你想读这个文档是Struts2的API在FilterDispacher类在这里正确的地方说:"提供静态内容".
希望你会觉得它很有用,对我来说这是一个很棒的功能,而且它实现得非常好.