首先在web.xml加以下代码
<!-- Character Encoding filter --> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring web flow --> <servlet> <servlet-name>WebFlow</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:webflow-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>WebFlow</servlet-name> <url-pattern>/payflow/*</url-pattern> </servlet-mapping>
添加webflow-config.xml
<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:webflow="http://www.springframework.org/schema/webflow-config"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
<webflow:flow-executor id="flowExecutor" />
<!-- The registry of executable flow definitions -->
<webflow:flow-registry id="flowRegistry"
flow-builder-services="flowBuilderServices">
<webflow:flow-location path="/WEB-INF/flows/payflow.xml"
id="payflow" />
<webflow:flow-location path="/WEB-INF/flows/readvalue.xml"
id="readvalue" />
</webflow:flow-registry>
<webflow:flow-builder-services id="flowBuilderServices"
view-factory-creator="mvcViewFactoryCreator" />
<!--
Configures Web Flow to use velocity to create views for rendering
-->
<bean id="mvcViewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="velocityViewResolver" />
</bean>
<!-- view support -->
<!-- velocity view begin 使用VELOCITY-->
<bean id="velocityConfig"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/templates/screen/" />
<property name="velocityProperties">
<props>
<prop key="input.encoding">GBK</prop>
<prop key="output.encoding">GBK</prop>
</props>
</property>
</bean>
<bean id="velocityViewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="cache" value="true" />
<property name="contentType" value="text/html;charset=GBK" />
<property name="exposeSpringMacroHelpers" value="true" />
</bean>
<!-- webmvc-config -->
<bean id="viewMappings"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/payflow.htm=flowController
</value>
</property>
<property name="defaultHandler">
<!-- UrlFilenameViewController会将"/index"这样的请求被映射成名为"index"的视图-->
<bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
</property>
</bean>
<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor" />
</bean>
</beans>
添加payflow.xml和readvalue.xml(subflow)
<?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">
<var name="payflow" class="com.taobao.upp.mpc.web.action.PayFlow" />
<on-start>
<evaluate expression="payflow.setBean(requestParameters)" result="conversationScope.flow"></evaluate>
</on-start>
<view-state id="start" view="invocation.vm" popup="false" redirect="false">
<transition on="submit" to="regist_view" bind="false" />
</view-state>
<subflow-state id="readvaluess" subflow="readvalue">
<transition on="readover" to="regist_view"></transition>
</subflow-state>
<view-state id="unregist_view" view="user-quick-buy"
redirect="false" popup="false" />
<view-state id="regist_view" view="user-alipay-binding"
redirect="false" popup="false">
<on-render>
<evaluate expression="flow.readValue()" result="flowScope.value" />
</on-render>
<transition on="readvalues" to="readvaluess"></transition>
<transition on="delivervalues" to="showvalue"></transition>
</view-state>
<view-state id="showvalue" view="user-tb-login" redirect="false"
popup="false">
</view-state>
</flow>
<?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">
<action-state id="readvalue">
<evaluate expression="payflow.readValue()" />
<transition to="readover" />
</action-state>
<end-state id="readover" />
</flow>
这样就完全OK了,velocity的编码问题亦一同搞定了!如何用就多学习相关资料了
本文详细介绍了如何在Spring WebFlow中设置字符编码,并通过实例展示了如何配置web.xml、webflow-config.xml以及流程定义文件payflow.xml和readvalue.xml。通过这些步骤解决了velocity模板的编码问题。
75

被折叠的 条评论
为什么被折叠?



