浏览 5482 次
锁定老帖子 主题:WebWork Portlet
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-11-10
在这个Portlet里面使用的xWork Action: public class HelloAction implements Action { private String _userName; public void setUserName(String name); { _userName = name; } public String getUserName(); { return _userName; } public String execute(); throws Exception { return SUCCESS; } } 可以看到,跟WebWork里面的用法完全一样。作为view的JSP如下: <%@page contentType="text/html;CHARSET=utf8" %> <%@ taglib uri="webwork" prefix="ww" %> Hello! <ww:property value="userName" /> 跟WebWork的情况也差不多。我改写了<ww:property>标签,在附件中可以找到改写后的PropertyTag。另外缺省的DispatcherResult也改写过了,在webwork-default.xml里面需要声明一下: <xwork> <package name="webwork-default"> <result-types> <result-type name="dispatcher" class="com.jbbis.portlets.xwork.PortletDispatcherResult" default="true"/> </result-types> 这里的关键是,action类是完全不需要改变的,虽然环境从Servlet换到了Portlet。这就是JavaBean-based framework的好处。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-11-10
好,我正在愁<ww:property>标签不能用了。
不过WebWorkPortlet有一个小错误哦,result.put(key, result);应该是result.put(key, value); private Map getSessionMap(PortletRequest request); { Enumeration attNames = request.getPortletSession();.getAttributeNames();; Map result = new HashMap();; while(attNames.hasMoreElements();); { String key = (String); attNames.nextElement();; Object value = request.getPortletSession();.getAttribute(key);; result.put(key, result);; } return result; } 而且在WebWork2.1后面版本中,WebWorkStatics.COMPONENT_MANAGER改为 ComponentInterceptor.COMPONENT_MANAGER。 我又加了一个PortletActionContext,解决Application scope Seesion的问题。 import java.util.Map; import javax.portlet.PortletContext; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.PortletSession; import com.opensymphony.xwork.ActionContext; /** * @author moxie * achqian@yahoo.con.cn */ public class PortletActionContext extends ActionContext implements WebWorkPortletStatics{ /** * @param context */ public PortletActionContext(Map context); { super(context);; } public static PortletRequest getPortletRequest();{ return (PortletRequest);ActionContext.getContext();.get(PORTLET_REQUEST);; } public static PortletResponse getPortletResponse();{ return (PortletResponse);ActionContext.getContext();.get(PORTLET_RESPONSE);; } public static PortletContext getPortletContext();{ return (PortletContext);ActionContext.getContext();.get(PORTLET_CONTEXT);; } public static Map getApplicationContextScopeSession();{ return (Map);ActionContext.getContext();.get(APPLICATION_SCOPE_SESSION);; } public static PortletSession getPortletSession();{ return getPortletRequest();.getPortletSession();; } } |
|
返回顶楼 | |
发表时间:2004-11-11
呵呵,谢谢两位热心人!
充分想象+无限扩展=体念webwork乐趣 |
|
返回顶楼 | |
发表时间:2004-11-12
这种方法不错,如果是struts的话移植就麻烦了
|
|
返回顶楼 | |
发表时间:2005-03-27
好像bea他们的portal都支持stuts的直接发布啊?麻烦么?有谁给我解释一下?
|
|
返回顶楼 | |
发表时间:2005-03-27
WebWork 的 Action 没有使用 Http request, 和 http response作为参数。
移植起来比 使用了 Http request, 和 http response作为参数 的 action 容易一些。 不过,我想问几个更深入的问题。 1. 假如 webwork action 使用了 http request (比如通过request aware, 或者 thread local), 2. 以前的 webwork action 的 config,还管用吗? 比如, url -> action的配置, 一些 redirect result 的 配置。 3. 以前的 action 之间的复杂交互,也许涉及到 session 的公用 Object, 这几种情况下, 移植的方法 还是一样吗? 还是需要做更多的工作 ? |
|
返回顶楼 | |