【发布时间】:2014-09-09 13:50:14
【问题描述】:
我将我的流程定义为:
builder.id("", PublisherBean.PUBLISHER_FLOW_NAME);
builder.viewNode("list", "/pages/publishers.xhtml");
builder.viewNode("details", "/pages/publishers-details.xhtml");
builder.viewNode("deleted", "/pages/publishers-deleted.xhtml");
builder.viewNode("form", "/pages/publishers-form.xhtml");
builder.viewNode("exit", "/index.xhtml");
builder.methodCallNode("invoke-update")
.expression("#{publisherBean.update()}")
.defaultOutcome("details");
builder.methodCallNode("switch-fail")
.defaultOutcome("invoke-publishers")
.expression("#{publisherBean.switchFail()}");
builder.switchNode("proceed-action-request")
.defaultOutcome("switch-fail")
.switchCase()
.condition("#{publisherBean.actionType.ifEdit()}").fromOutcome("form");
builder.switchNode("go-for-it")
.defaultOutcome("switch-fail")
.switchCase()
.switchCase()
.condition("#{publisherBean.actionType.ifEdit()}").fromOutcome("invoke-update");
如您所见,有两个切换节点。第一个指向View Node,第二个尝试指向Method Call Node。
第一个工作正常,但第二个让我头疼。第二个是给我一个错误
Unable to find matching navigation case with from-view-id '/pages/publishers-form.xhtml' for action '#{publisherBean.proceed()}' with outcome 'proceed-form'.
proceed函数只是
public String proceed() {
LOG.log(Level.OFF, "Form proceed in action type {0}", actionType);
return "go-for-it";
}
记录的信息证实,publisherBean.actionType.ifEdit() 返回 true,但该事实被忽略。如果我将结果从invoke-update 更改为form 或任何其他View Node id,那么它“工作正常”。
是我做错了什么,还是Method Call Node 不能用作Switch Node 的结果?
【问题讨论】:
标签: jsf-2 flow-scope