有没有办法将模型数据传递给视图状态?请考虑以下示例视图状态:
class BookController {
def shoppingCartFlow = {
showProducts {
on("checkout").to "enterPersonalDetails"
on("continueShopping").to "displayCatalogue"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我想将数据模型传递[products: Product.list()]给showProducts.gsp,除了在视图状态之前加上一个将模型存储在流程范围内的动作状态之外,还有什么方法可以做到这一点吗?
谢谢,唐
我们的应用程序是JSF,hibernate和Spring.目前网址格式如下 http://www.skill-guru.com/skill/login/testDetails.faces?testId=62&testName=PMP-Certification-practice-test
我们想要一个像http://www.skill-guru.com/urltitle?some参数这样的干净网址
我们可以通过与JSF集成Spring webflow来实现这一目标.
还有其他建议吗?
我们正在尝试使用JSF 2.0的Spring webflow 1.0,但这似乎不起作用.
我想整合Spring 3,Web Flow 2,JSF 2,我需要你向我推荐一个好的教程或示例,在此先感谢.
更新:
我使用了以下示例,它没有任何问题与我一起工作正常:
http://www.mkyong.com/jsf2/jsf-2-0-spring-hibernate-integration-example/
但它不使用弹簧网络流程,我不知道这种方法是否有任何问题.
在配置文件中,有许多元素:flow-executor,flow-registry,flow-builder-services,viewFactoryCreator,FlowHandlerAdapter,FlowHandlerMapping等.
他们的工作顺序是什么?
当一个请求进来时,servlet会将它发送给一个处理程序,然后我猜Spring Web流程框架将以某种方式解析流并返回一个视图.但是spring web流程框架究竟是如何处理请求的呢?以配置文件中定义的那些元素的顺序是什么?
我试图在Eclipse中使用junit在Eclipse Web Flow Project上运行我的第一个测试,并且还使用mvn测试从控制台运行,但是给了我同样的错误.
java.lang.NoClassDefFoundError:org/junit/Assume $ AssumptionViolatedException
这是我的java代码:
package org.uftwf.memberinquiry.text;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.uftwf.memberinquiry.model.MemberInquiryInformation;
import org.uftwf.memberinquiry.model.MemberRequest;
import org.uftwf.memberinquiry.service.MemberInquiryService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:root-config.xml")
public class TestApp {
@Autowired
private MemberInquiryService service;
@Test
public void testgetMemeberRequestInformation() {
MemberRequest inMemberRequest = new MemberRequest();
MemberInquiryInformation testInfo = service.getMemeberRequestInformation(inMemberRequest);
inMemberRequest.setRequestor("cpilling04@aol.com.dev");
Assert.assertEquals(testInfo.getFirst_Name(), "Christine");
Assert.assertEquals(testInfo.getLast_Name(), "Pillings");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的pox.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.uftwf.memberinquiry</groupId>
<artifactId>MemberInquiry</artifactId>
<name>Member Inquiry</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<developers>
<developer>
<id>jsmith</id> …Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序使用Spring 3.1.0 JAR.我通过命令名称将我的bean类映射到了视图,我对映射它没有问题.
问题是int我的bean类中有一个变量:
private int id;
Run Code Online (Sandbox Code Playgroud)
当我用这个变量映射时<'form:input path="id" />',它0在文本框中给出了我不想要的默认值.我怎么能摆脱这个?
已实现如下的switch语句.
如果有任何错误,请您验证并更正吗?
<set name="flowScope.Valid" value="true">
<decision-state id="isDNCheckNotRequired" test="Valid == true">
<transition on="true" to="even"/>
<transition on="false" to="odd"/>
</decision-state>
<action-state id="even">
<evaluate expression="Test.setEven(true)">
</action-state>
<action-state id="odd">
<evaluate expression="Test.set(false)">
</action-state>
Run Code Online (Sandbox Code Playgroud)
请告诉我这是春天webflow 2.0中的实现方式
提前致谢.
我在应用程序中使用Webflow 2.3.2,用户可以在一步中添加/删除绑定模型对象中的列表(它们只是在修改后返回到当前步骤).例如,我的对象可能如下所示:
public class MyInfo implements Serializable {
List<String> myList = new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
在webflow中执行"添加"没有问题,因为我只是将新对象粘贴在列表的末尾,但对于"删除",我需要识别要删除的元素.我现在正在做的是使用"currentEvent"预定义的EL对象并获取原始事件"value",我已使用要删除的记录的ID填充该值.我想知道是否有更优雅的方式来做到这一点,因为这似乎走了很长的路. 谁能建议更好的方法呢? 这是我现在正在做的事情的例证:
我的JSP文件(注意"删除"按钮):
<c:forEach items="${myInfo.myList}" var="listItem" varStatus="listItemStatus">
<c:set var="v" value="${listItemStatus.index}"/>
<div><form:input id="listItemValue_${v}" path="myInfo.myList[${v}]"/></div>
<div><button id="deleteItem_${v}" name="_eventId_deleteItem" type="submit" value="${v}">Delete This Item</button></div>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我的"flow.xml"文件:
<transition on="deleteItem" bind="false" validate="false">
<evaluate expression="flowService.deleteItem(flowScope.myInfo, currentEvent.attributes)" result="flowScope.myInfo" />
</transition>
Run Code Online (Sandbox Code Playgroud)
我的事件处理程序
public MyInfo deleteAccount(MyInfo myInfo, LocalAttributeMap currentEvent) {
myInfo.getMyList().remove(Integer.valueOf((String)(currentEvent.asMap().get("_eventId_deleteItem"))).intValue());
return myInfo;
}
Run Code Online (Sandbox Code Playgroud) 获取 Spring Webflow 生成的 FLOW ID 完整列表的最佳方法是什么?
这是我的配置:
<webflow:flow-registry id="flowRegistry"
flow-builder-services="flowBuilderServices"
base-path="/WEB-INF/pageFlows">
<webflow:flow-location-pattern value="/**/*-flow.xml"/>
</webflow:flow-registry>
Run Code Online (Sandbox Code Playgroud)
[更新 1] 我应该澄清我想在 Java 代码中执行此操作,而不是通过检查我的配置。
[更新 2] 答案: requestContext.getActiveFlow().getApplicationContext()
我正在使用Spring MVC和hibernate构建一个Web应用程序.我正在努力扩大范围.例如,在同一界面上创建父级和子级需要在创建第一个子级后重置子bean.Spring MVC不允许从会话范围中删除bean.同时,跨越多个请求范围转移儿童是不切实际的.我需要一个会话范围.
我现在将Spring Web Flow视为一种解决方案.但是,它的文档很少,似乎完全依赖于xml配置.这两个功能似乎都表明它是一个较旧的,可能不太受支持的项目.
任何人都可以建议我是否应该花时间学习Spring Web Flow,或者建议与Spring MVC相关的替代解决方案.
spring-webflow ×10
spring ×6
spring-mvc ×5
java ×3
forms ×1
friendly-url ×1
grails ×1
groovy ×1
java-ee ×1
jsf ×1
jsf-2 ×1
junit ×1
servlets ×1
spring-3 ×1