S 2 SH統合FreeMarker
11498 ワード
Unable to load configuration. - bean - jar:file:/D:/apache-tomcat-6.0.32/webapps/s2shf/WEB-INF/lib/struts2-core-2.1.8.jar!/struts-default.xml:29:72
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:431)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load configuration. - bean - jar:file:/D:/apache-tomcat-6.0.32/webapps/s2shf/WEB-INF/lib/struts2-core-2.1.8.jar!/struts-default.xml:29:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
... 29 more
Caused by: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/D:/apache-tomcat-6.0.32/webapps/s2shf/WEB-INF/lib/struts2-core-2.1.8.jar!/struts-default.xml:29:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:221)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:169)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
... 31 more
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean - file:/D:/apache-tomcat-6.0.32/webapps/s2shf/WEB-INF/classes/struts-default.xml:4:72 - bean - jar:file:/D:/apache-tomcat-6.0.32/webapps/s2shf/WEB-INF/lib/struts2-core-2.1.8.jar!/struts-default.xml:29:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:205)
... 34 more
jarパッケージ競合!!,間違いのないS 2 SHのjarパッケージをセットして、FreeMarkerのjarパッケージを導入することをお勧めします.
struts-defaultでxmlではfreemarkerテンプレートtypeをデフォルトとしているので、type=「freemarker」を指定する必要はありません
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult" default="true"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
freemarkerラベルはftlファイルで解析できますが、htmlファイルでは解析できません.ネットで長い間調べて、いろいろなバッグを導入したことがあって、xmlの中でいろいろなフィルタを加えたことがあって、やはり役に立たないです
最後に解決した後、jarパッケージを追加したり、freemarkerテンプレート解析文を構成したりしないことがわかりました.
コードは以下の通りです(ここではビューファイルをtest.jspに変更してもfreemarkerラベルを解析できますが、jspラベルは解析できません.jspファイルでjspとfreemarkerラベルを同時に解析できる必要がある場合はsitemeshを利用してhttp://www.blogjava.net/ITdavid/archive/2009/11/29/304110.htmlを参照してください).
public String findStu() {
Student stu = new Student();
stu.setAge(10);
stu.setBirth("2013");
stu.setStuId(1);
stu.setStuName("sanmao");
stu.setStuNumber("22");
List<Student> l = new ArrayList<Student>();
l.add(stu);
stuList = l;
logger.info("findStuAction stuList " + stuList.size());
this.setTplPath("/WEB-INF/templates/aaa/test.html");
return SUCCESS;
}
xmlでは、次のように構成されています.
<package name="core-struts" extends="struts-default" namespace="/">
<action name="regist*" method="{1}" class="com.person.action.RegistAction">
<result>${tplPath}</result>
</action>
</package>
これでhtmlにfreemarkerラベルを使うことができます.これは、jarの競合やjarの導入時にパケットが失われるためです.