portal有本身的action建立架构,但是有时候会需要把原来的structs项目集成进来,
或者建立一个纯粹java下的structs的架构!本文介绍如下:
想将一个STRUTS项目集成到bea portal中去,或者建立一个类似structs的protal项目:
建的portal应用名(appliation)叫myportal
建的PORTAL的web工程名叫myportalweb,在工程下建立web文件夹,即web模块!
将例JSP文件(hello.jsp)放在了myportal/myportalweb/web/index/hello.jsp目录下。
在这个JSP文件中有一下列一句:
<html:form action="/HelloWorld.do" method="post">
将STRUTS例子中的.java及.jar文件放在了相应的目录下,并且确定了.java文件已经生成了.class文件。
因为在bea portal中都要用struts的多模块概念,bea文档原话说:“模块路径为相对于 Web 应用程序根目录的
目录路径”。所以认为模块路径名为 /web 。相应的我把struts例子中的struts-config.xml文件复制过来并相应
的更名为jpf-struts-config-web.xml,并放在了 myportal/myportalweb/WEB-INF/.pageflow-struts-generated
文件夹下。
该文件中配置了对HelloWorld.do的配置,如下:
<struts-config>
<form-beans>
<form-bean name="HelloForm" type="hello.HelloForm"/>
</form-beans>
<action-mappings>
<action path = "/HelloWorld"
type = "hello.HelloAction"
name = "HelloForm"
scope = "session"
validate = "true"
input = "/index/hello.jsp">
<forward name="SayHello" path="/hello.jsp" />
</action>
</action-mappings>
<controller processorClass="com.bea.struts.adapter.action.AdapterRequestProcessor"/>
</struts-config>
然后我在IE中运行“http://localhost:7001/myPortalWeb/hello.jsp”,
结果报“An error has occurred: Cannot retrieve mapping for action HelloWorld”的错误,
这是为什么呀?
是否需要把这个struts模块的xml文件在web.xml文件中进行注册,根据资料上说是自行加载该xml的。
我后来发现有两个问题:
1、在web.xml中把字符集进行了修改:
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
2、即使设置了 scope = "session"的属性,即时使用<html:form>标签,该jsp仍然无法自行建立
action和actionForm的实例,需要通过:
http://localhost:7001/myPortalWeb/web/HelloWorld.do来访问,这个时候才会看到!