?? jworkspicoactioninvocation.java
字號:
/*****************************************************************************
* Copyright (C) NanoContainer Organization. All rights reserved. *
* ------------------------------------------------------------------------- *
* The software in this package is published under the terms of the BSD *
* style license a copy of which has been included with this distribution in *
* the LICENSE.txt file. *
* *
*****************************************************************************/
package org.softme.jworks.dispatcher;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.nanocontainer.nanowar.KeyConstants;
import org.nanocontainer.nanowar.RequestScopeObjectReference;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoContainer;
import org.picocontainer.defaults.DefaultPicoContainer;
import org.picocontainer.defaults.ObjectReference;
import com.opensymphony.util.ClassLoaderUtil;
import com.opensymphony.webwork.WebWorkStatics;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionProxy;
import com.opensymphony.xwork.DefaultActionInvocation;
import com.opensymphony.xwork.XworkException;
/**
* @author Chris Sturm
* @author Aslak Hellesøy
* @version $Revision: 1.2 $
*/
public class JWorksPicoActionInvocation extends DefaultActionInvocation implements KeyConstants {
public JWorksPicoActionInvocation(ActionProxy proxy) throws Exception {
super(proxy);
}
public JWorksPicoActionInvocation(ActionProxy proxy, Map extraContext) throws Exception {
super(proxy, extraContext);
}
public JWorksPicoActionInvocation(ActionProxy proxy, Map extraContext, boolean pushAction) throws Exception {
super(proxy, extraContext, pushAction);
}
protected void createAction() {
// BUGFIXED: ActionConfig not a Action Interface, need class loader
// Class actionClass = proxy.getConfig().getClass();// changed from getClazz() as of XWork 1.0
Class actionClass = null;
// 使用ClassLoaderUtil (OSCore) 加載 Action Class
try {
actionClass = ClassLoaderUtil.loadClass(proxy.getConfig().getClassName(), this.getClass());
} catch (ClassNotFoundException e) {
throw new XworkException("Action class " + proxy.getConfig().getClassName() + " not found in classpath. - " + Action.class.getName(), e);
}
PicoContainer requestContainer = getRequestContainer();
action = (Action) requestContainer.getComponentInstance(actionClass);
if (action == null) {
// The action wasn't registered. Do it ad-hoc here.
// FIXME: ad-hoc 注冊的ActionClass 不能處理關聯。
MutablePicoContainer tempContainer = new DefaultPicoContainer(requestContainer);
tempContainer.registerComponentImplementation(actionClass);
action = (Action) tempContainer.getComponentInstance(actionClass);
}
}
private PicoContainer getRequestContainer() {
HttpServletRequest request = (HttpServletRequest) getStack().getContext().get(WebWorkStatics.HTTP_REQUEST);
ObjectReference ref = new RequestScopeObjectReference(request, REQUEST_CONTAINER);
return (PicoContainer) ref.get();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -