pageformaction.java

来自「这个weblogging 设计得比较精巧」· Java 代码 · 共 373 行

JAVA
373
字号
package org.roller.presentation.website.actions;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionMessage;import org.apache.struts.action.ActionMessages;import org.apache.struts.actions.DispatchAction;import org.roller.RollerException;import org.roller.RollerPermissionsException;import org.roller.model.UserManager;import org.roller.pojos.PageData;import org.roller.pojos.UserData;import org.roller.pojos.WebsiteData;import org.roller.presentation.RollerRequest;import org.roller.presentation.forms.PageForm;import org.roller.presentation.pagecache.PageCacheFilter;import org.roller.util.StringUtils;import org.roller.util.Utilities;//////////////////////////////////////////////////////////////////////////////** * Page form action. * @struts.action name="pageForm" path="/editor/page" *  	scope="session" parameter="method" *  * @struts.action-forward name="removePage.page" path="/website/remove-page.jsp" * @struts.action-forward name="editPage.page" path="/website/edit-page.jsp" * @struts.action-forward name="editPages.page" path="/website/edit-pages.jsp" */public final class PageFormAction extends DispatchAction{    private static Log mLogger =         LogFactory.getFactory().getInstance(PageFormAction.class);            public ActionForward add(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("editPages.page");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                PageForm form = (PageForm)actionForm;                PageData data = new PageData();                form.copyTo(data, request.getLocale());                WebsiteData hd = rreq.getWebsite();                data.setWebsite( hd );                data.setUpdateTime( new java.util.Date() );                data.setDescription("");                data.setTemplate("");                validateLink( data );                UserManager mgr = rreq.getRoller().getUserManager();                mgr.storePage( data );                rreq.getRoller().commit();                ActionMessages uiMessages = new ActionMessages();                uiMessages.add(ActionMessages.GLOBAL_MESSAGE,                         new ActionMessage("pagesForm.addNewPage.success",                                 data.getName()));                saveMessages(request, uiMessages);                                UserData user = rreq.getUser();                PageCacheFilter.removeFromCache( request, user );                                    actionForm.reset(mapping,request);                                                addModelObjects(rreq);            }            else            {                forward = mapping.findForward("access-denied");            }        }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    public ActionForward edit(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("editPage.page");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                UserData ud = rreq.getUser();                PageData pd = rreq.getPage();                PageForm pf = (PageForm)actionForm;                pf.copyFrom(pd, request.getLocale());                PageCacheFilter.removeFromCache( request,ud );                                addModelObjects(rreq);            }            else            {                forward = mapping.findForward("access-denied");            }        }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    public ActionForward editPages(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("editPages.page");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                addModelObjects(rreq);            }            else            {                forward = mapping.findForward("access-denied");            }        }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    public ActionForward remove(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("editPages");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                PageForm form = (PageForm)actionForm;                PageData data = new PageData();                form.copyTo(data, request.getLocale());                UserManager mgr = rreq.getRoller().getUserManager();                mgr.removePageSafely( data.getId() );                rreq.getRoller().commit();                UserData user = rreq.getUser();                PageCacheFilter.removeFromCache( request,user );                                    addModelObjects(rreq);                actionForm.reset(mapping,request);            }            else            {                forward = mapping.findForward("access-denied");            }        }        catch (RollerException e)        {            ActionErrors errors = new ActionErrors();            errors.add(null, new ActionError(                    "error.internationalized",e.getRootCauseMessage()));            saveErrors(request, errors);               }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    public ActionForward removeOk(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("removePage.page");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                PageData cd = rreq.getPage();                PageForm pf = (PageForm)actionForm;                pf.copyFrom(cd, request.getLocale());                UserData ud = rreq.getUser();                request.setAttribute("user",ud);            }            else            {                forward = mapping.findForward("access-denied");            }        }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    public ActionForward update(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        ActionForward forward = mapping.findForward("editPage.page");        try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            if ( rreq.isUserAuthorizedToEdit() )            {                PageForm form = (PageForm)actionForm;                UserManager mgr = rreq.getRoller().getUserManager();                PageData data = mgr.retrievePage(form.getId());                data.save(); // should through exception if no save permission                form.copyTo(data, request.getLocale());                data.setUpdateTime( new java.util.Date() );                data.setWebsite( rreq.getWebsite() );                validateLink( data );                mgr.storePage( data );                rreq.getRoller().commit();                // set the (possibly) new link back into the Form bean                ((PageForm)actionForm).setLink( data.getLink() );                ActionMessages uiMessages = new ActionMessages();                uiMessages.add(ActionMessages.GLOBAL_MESSAGE,                         new ActionMessage("pageForm.save.success",                                 data.getName()));                saveMessages(request, uiMessages);                UserData user = rreq.getUser();                PageCacheFilter.removeFromCache( request,user );            }            else            {                forward = mapping.findForward("access-denied");            }                          // Don't reset this form. Allow user to keep on tweaking.                    //actionForm.reset(mapping,request);        }        catch (RollerPermissionsException e)        {            ActionErrors errors = new ActionErrors();            errors.add(null, new ActionError("error.permissions.deniedSave"));            saveErrors(request, errors);            forward = mapping.findForward("access-denied");        }        catch (Exception e)        {            mLogger.error("ERROR in action",e);            throw new ServletException(e);        }        return forward;    }    //-----------------------------------------------------------------------    /**     * Ensures that the page has a safe value for the link     * field.  "Safe" is defined as containing no html     * or any other non-alphanumeric characters.     * While this is overly strict (there are non-alphanum     * characters that are web-safe), this is a much easier     * test-and-correct.  Otherwise we would need a RegEx package.     */    private void validateLink( PageData data )    {        // if data.getLink() is null or empty        // use the title ( data.getName() )        if ( StringUtils.isEmpty( data.getLink() ) )        {            data.setLink( data.getName() );        }        // if link contains any nonAlphanumeric, strip them        // first we must remove any html, as this is        // non-instructional markup.  Then do a straight        // removeNonAlphanumeric.        if ( !StringUtils.isAlphanumeric( data.getLink() ) )        {            String link = Utilities.removeHTML( data.getLink() );            link = Utilities.removeNonAlphanumeric( link );            data.setLink( link );        }    }        //-----------------------------------------------------------------------    public ActionForward cancel(        ActionMapping       mapping,        ActionForm          actionForm,        HttpServletRequest  request,        HttpServletResponse response)        throws IOException, ServletException    {        return (mapping.findForward("editPages"));    }        //-----------------------------------------------------------------------    private void addModelObjects( RollerRequest rreq )         throws RollerException {                      HttpServletRequest request = rreq.getRequest();                    UserManager mgr = rreq.getRoller().getUserManager();        UserData user = rreq.getUser();        request.setAttribute("user",user);        WebsiteData wd = rreq.getWebsite();        request.setAttribute("website", wd);        List pages = mgr.getPages(wd);        request.setAttribute("pages",pages);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?