searchpersonflowbuilder.java
来自「spring的WEB开发插件,支持多状态WEB开发」· Java 代码 · 共 74 行
JAVA
74 行
/*
* Copyright 2002-2004 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.webflow.samples.phonebook.web;
import org.springframework.binding.support.Mapping;
import org.springframework.webflow.Transition;
import org.springframework.webflow.ViewState;
import org.springframework.webflow.access.AutowireMode;
import org.springframework.webflow.config.AbstractFlowBuilder;
import org.springframework.webflow.config.FlowBuilderException;
import org.springframework.webflow.support.ParameterizableFlowAttributeMapper;
/**
* Java-based flow builder that searches for people in the phonebook. The flow
* defined by this class is exactly the same as that defined in the
* "search-flow.xml" XML flow definition.
* <p>
* This encapsulates the page flow of searching for some people, selecting a
* person you care about, and viewing their person's details and those of their
* collegues in a reusable, self-contained module.
*
* @author Keith Donald
*/
public class SearchPersonFlowBuilder extends AbstractFlowBuilder {
private static final String DISPLAY_CRITERIA = "displayCriteria";
private static final String EXECUTE_SEARCH = "executeSearch";
private static final String DISPLAY_RESULTS = "displayResults";
private static final String BROWSE_DETAILS = "browseDetails";
protected String flowId() {
return "searchFlow";
}
public void buildStates() throws FlowBuilderException {
// view search criteria
ViewState displayCriteria = addViewState(DISPLAY_CRITERIA, "searchCriteria", on("search", EXECUTE_SEARCH,
beforeExecute(method("bindAndValidate", action("searchFormAction")))));
displayCriteria.setEntryAction(method("setupForm", action("searchFormAction")));
// execute query
addActionState(EXECUTE_SEARCH, action(SearchPhoneBookAction.class, AutowireMode.CONSTRUCTOR), new Transition[] {
on(error(), DISPLAY_CRITERIA), on(success(), DISPLAY_RESULTS) });
// view results
addViewState(DISPLAY_RESULTS, "searchResults", new Transition[] { on("newSearch", DISPLAY_CRITERIA),
on(select(), BROWSE_DETAILS) });
// view details for selected user id
ParameterizableFlowAttributeMapper idMapper = new ParameterizableFlowAttributeMapper();
idMapper.setInputMapping(new Mapping("sourceEvent.parameters.id", "id", fromStringTo(Long.class)));
addSubflowState(BROWSE_DETAILS, flow("detailFlow"), idMapper,
new Transition[] { on(finish(), EXECUTE_SEARCH), on(error(), "error") });
// end - an error occured
addEndState(error(), "error");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?