Hello struts-dev,
I am glad to announce to community my extension of struts -
bean-factory. It is short description of it below -
- in struts-config.xml we define bean-factories in such manner
<bean-factories>
<!-- Simple factory - creates object only (similar to new) -->
<factory name="simple" type="org.apache.struts.factory.SimpleBeanFactory"/>
<!-- JDBC factory - takes SQL query string, parameters and init
array of beans -->
<factory name="JDBC"
type="org.apache.struts.factory.jdbc.IndexLimitedJDBCBeanFactory"
mappingClass="org.apache.struts.factory.jdbc.JDBCFactoryMapping"/>
</bean-factories>
- after that we define bean templates
<bean-templates>
<bean name="test" type="com.sv.beans.Test">
<parameter name="id" type="java.lang.Integer"/>
<parameter name="name" type="java.lang.String"/>
</bean>
<bean name="document" type="com.sv.beans.Document">
<parameter name="docId" type="java.lang.Integer"/>
</bean>
<bean name="docIndex" type="com.sv.beans.Document">
<parameter name="query" type="java.lang.String" value="SELECT * FROM web.test"
force="true"/>
</bean>
<bean name="docLimIndex" type="com.sv.beans.Document">
<parameter name="query" type="java.lang.String" value="SELECT * FROM web.test"
force="true"/>
<parameter name="start" type="java.lang.Integer" value="0"/>
<parameter name="length" type="java.lang.Integer" value="10"/>
</bean>
</bean-templates>
Each template is bean description with parameters definition.
Bean-factories uses this information to create appropriate object
and init some properties or call constructor with described
parameters.
- in each action mapping we add bean mappings to define lists of
beans, which must be created at before call to perform of this
action. Each bean-mapping defines link from bean-template to
bean-factory which must be used to create bean instance.
<action path="/index"
type="com.sv.action.ViewAction">
<bean name="test" factory="simple"/>
<forward name="view" path="/WEB-INF/jsp/index.jsp"/>
</action>
<action path="/archive"
type="com.sv.action.ViewAction">
<bean name="docLimIndex" factory="JDBC" necessary="true"/>
<forward name="view" path="/WEB-INF/jsp/archive.jsp"/>
</action>
- extended version of the ActionServlet - BeanFactoryServlet uses
this information to create beans before call to the perform
method.
- with this mechanism we can define one formal action class -
ViewAction and migrate all predicates to declarations and define
all bean creations in struts-config.xml
- and at all - I write bean to store one row, write bean-template
definition, link it to the JDBC factory in action-mapping section
and without other problems use this bean in jsp view!
I need to write some help to use it and make some cosmetic additions
to the code. After some days I'l be glad to publish this extention
to community.
--
Best regards,
Oleg mailto:[EMAIL PROTECTED]