1

Я не могу настроить веб-поток с помощью плиток apache. Отображается первый вид, но второй даетКонфигурация Spring WebFlow 2 и Apache Tiles 3. Второй вид не работает.

HTTP Status 404 - Запрошенный ресурс недоступен.

SpringMVC-диспетчерская-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:webflow-config="http://www.springframework.org/schema/webflow-config" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
    http://www.springframework.org/schema/webflow-config 
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.4.xsd"> 

    <context:component-scan base-package="com.rog.webshop.controller"/> 
    <mvc:resources mapping="/resources/**" location="/resources/"/> 
    <!--<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>--> 
    <mvc:annotation-driven conversion-service="conversionService" enable-matrix-variables="true" validator="validator"/> 


    <!--TILES --> 
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/tiles.xml</value> 
      </list> 
     </property> 
    </bean> 

    <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass" 
        value="org.springframework.web.servlet.view.tiles3.TilesView"> 
     </property> 
     <property name="order" value="-2"/> 
    </bean> 







    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
     <property name="validationMessageSource" ref="messageSource"/> 
    </bean> 

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
     <property name="basename" value="messages"/> 
    </bean> 

    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 

     <property name="converters"> 
      <list> 
       <bean id="roleToUserProfile" class="com.rog.webshop.util.RoleToUserProfileConverter"/> 
       <bean id="categoryToProduct" class="com.rog.webshop.util.CategoryConverter"/> 
      </list> 
     </property> 
    </bean> 


    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <property name="maxUploadSize" value="10240000"/> 
    </bean> 






    <!--WEBFLOW CONFIG--> 
    <webflow-config:flow-executor id="flowExecutor" 
            flow-registry="flowRegistry"/> 
    <webflow-config:flow-builder-services id="flowBuilderServices" 
              validator="validator" 
              view-factory-creator="mvcViewFactoryCreator"/> 
    <webflow-config:flow-registry id="flowRegistry" 
            base-path="WEB-INF/flows" 
            flow-builder-services="flowBuilderServices"> 
     <webflow-config:flow-location path="/checkout/checkout-flow.xml" 
             id="checkout"/> 
    </webflow-config:flow-registry> 

    <!-- Configures Web Flow to use Tiles to create views for rendering; Tiles allows for applying consistent layouts to your views --> 
    <bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"> 
     <property name="viewResolvers" ref="tilesViewResolver" /> 
    </bean> 
    <bean id="flowHandlerMapping" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> 
     <property name="flowRegistry" ref="flowRegistry"/> 
     <property name="order" value="-1"/> 
    </bean> 
    <bean id="flowHandlerAdapter" class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"> 
     <property name="flowExecutor" ref="flowExecutor"/> 
    </bean> 







    <!-- Configure to plugin JSON as request and response in method handler --> 
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
     <property name="messageConverters"> 
      <list> 
       <ref bean="jsonMessageConverter"/> 
      </list> 
     </property> 
    </bean> 
    <!-- Configure bean to convert JSON to POJO and vice versa --> 
    <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
    </bean> 


</beans> 

Мой поток

<?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.xsd"> 

    <var name="order" class="com.rog.webshop.model.order.Order" /> 

    <action-state id="addCartToOrder"> 
     <evaluate expression="cartService.validate(requestParameters.cartId)" 
        result="order.cart" /> 
     <transition to="InvalidCartWarning" 
        on-exception="com.rog.webshop.exception.InvalidCartException" /> 
     <transition to="collectCustomerInfo" /> 
    </action-state> 

    <view-state id="collectCustomerInfo" view="collectCustomerInfo" model="order"> 
     <!--<binder>--> 
      <!--<binding property="customer.customerId" required="true" />--> 
      <!--<binding property="customer.name" required="true" />--> 
      <!--<binding property="customer.billingAddress" required="true" />--> 
      <!--<binding property="customer.phoneNumber" required="true" />--> 
     <!--</binder>--> 
     <transition on="customerInfoCollected" to="collectShippingDetail" /> 
    </view-state> 

    <view-state id="collectShippingDetail" view="collectShippingDetail" model="order"> 
     <transition on="shippingDetailCollected" to="orderConfirmation" /> 
     <transition on="backToCollectCustomerInfo" to="collectCustomerInfo" /> 
    </view-state> 

    <view-state id="orderConfirmation" view="orderConfirmation"> 
     <transition on="orderConfirmed" to="processOrder" /> 
     <transition on="backToCollectShippingDetail" to="collectShippingDetail" /> 
    </view-state> 

    <action-state id="processOrder" > 
     <evaluate expression="orderService.saveOrder(order)" result="order.orderId"/> 
     <transition to="thankCustomer" /> 
    </action-state> 

    <view-state id="InvalidCartWarning" view="InvalidCartWarning"> 
     <transition to="endState"/> 
    </view-state> 

    <view-state id="thankCustomer" model="order" view="thankCustomer"> 
     <transition to="endState"/> 
    </view-state> 

    <end-state id="endState"/> 

    <end-state id="cancelCheckout" view = "checkOutCancelled.jsp"/> 

    <global-transitions> 
     <transition on = "cancel" to="endState" /> 
    </global-transitions> 

</flow> 

Плитки определения для двух зрения я использую в потоке:

<definition name="collectCustomerInfo" extends="shop.base"> 
    <put-attribute name="title" value="Shop homepage"></put-attribute> 
    <put-attribute name="body" value="/WEB-INF/flows/checkout/collectCustomerInfo.jsp"></put-attribute> 
</definition> 


<definition name="collectShippingDetail" extends="shop.base"> 
    <put-attribute name="title" value="Shop homepage"></put-attribute> 
    <put-attribute name="body" value="/WEB-INF/flows/checkout/collectShippingDetail.jsp"></put-attribute> 
</definition> 

Это, как я вызвать переход от первого взгляда на второй в JSP (от collectCustomerInfo до collectShippingDetail

   <div class="form-group"> 
       <div class="col-lg-offset-2 col-lg-10"> 
        <input type="submit" id="btnAdd" class="btn btn-primary" 
         value="Add" name="_eventId_customerInfoCollected" /> 
        <button id="btnCancel" class="btn btn-default" name="_eventId_cancel">Cancel</button> 
       </div> 
      </div> 
+0

Можете ли вы опубликовать stacktrace исключения, которое вы получаете? – rptmat57

+0

У меня нет ошибок в моей среде IDE. Только это в моей консоли браузера: 'http: // localhost: 8080/WEB-INF/views/definitions/layout.jsp? E xecution = e1s1 Не удалось загрузить ресурс: сервер ответил статусом 404()' – Artur

+0

Этот URL-адрес после перенаправления? Каков ваш '' тег? – dbreaux

ответ

0

попробуйте использовать:

<bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTiles3View"/> 
</bean> 

и посмотреть, если вы получите другой

+0

Тот же результат. У меня нет ошибок в моей среде IDE. Только это в моей консоли браузера: 'http: // localhost: 8080/WEB-INF/views/definitions/layout.jsp? Execution = e1s1 Не удалось загрузить ресурс: сервер ответил статусом 404()' – Artur

0

Возможно, это поможет

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView">   
    </property> 
    <property name="order" value="0" /> 
</bean> 

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 

<bean id="tilesConfigurer" 
     class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
</bean>