Duc Hoang
Duc Hoang

Reputation: 45

Spring webflow integration with the tiles.xml

I've a spring webflow project with the login-flow.xml like this

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <view-state id="start" view="login.xhtml/>
    <end-state id="end" />
</flow>

The problem that, how could I replace the view in the view-state by a view name defined in the tiles.xml? something like

<view-state id="start" view="login"/>

tiles.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
    <definition name="base.definition"
        template="/WEB-INF/layout/layoutgreen/baseLayout.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="topHeader" value="/WEB-INF/layout/layoutgreen/topHeader.xhtml"/>
        <put-attribute name="header" value="/WEB-INF/layout/layoutgreen/header.xhtml" />
        <put-attribute name="menu" value="/WEB-INF/layout/layoutgreen/menu.xhtml" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/layout/layoutgreen/footer.xhtml" />
    </definition>

    <definition name="login" extends="base.definition">
        <put-attribute name="title" value="Login" />
        <put-attribute name="header" value="/WEB-INF/layout/layoutgreen/lheader.jsp" />
        <put-attribute name="body" value="/WEB-INF/flows/login/login.xhtml" />
    </definition>

</tiles-definitions>

Thanks

Upvotes: 0

Views: 699

Answers (1)

QGA
QGA

Reputation: 3192

Apache tiles works with spring webflow exactly as you described

However you need to enable webflow to work with apache tiles to make it working

Please look at my configuration below to understand how to proceed

<bean id="tilesViewResolver"
    class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
</bean>
<bean id="tilesConfigurer"
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">

        <list>
            <value>/WEB-INF/layouts/default.xml</value>
        </list>
    </property>
</bean>

<webflow-config:flow-registry id="flowRegistry"
        base-path="/WEB-INF/flows"
        flow-builder-services="flowBuilderServices">
    <webflow-config:flow-location 
        id="contact" path="contact-flow.xml">
    </webflow-config:flow-location>
</webflow-config:flow-registry>

<webflow-config:flow-executor id="flowExecutor"
    flow-registry="flowRegistry">
</webflow-config:flow-executor>

<bean id="flowHandlerAdapter"
    class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor"></property>
</bean>

<bean id="flowHandlerMapping" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry"></property>
    <property name="order" value="0"></property>
</bean>

<webflow-config:flow-builder-services id="flowBuilderServices"
    view-factory-creator="mvcViewFactoryCreator" validator="validator"/>

<bean id="mvcViewFactoryCreator"
    class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="tilesViewResolver"></property>
</bean>

<bean id="validator"
    class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
</bean>

Upvotes: 0

Related Questions