1

多亏了您的帮助,我在定制方面取得了一些重大进展,并期待着同样的进步。我在“高级”选项卡中创建了自定义选项卡,现在看起来像这样。我已经能够添加一个文本字段以及一个“保存”按钮。我实际上遵循了“编辑空间详细信息”选项,并采用了两个表单元素来实现输出。这就是我的虚拟机现在的样子。

  ##requireResource("confluence.web.resources:space-admin")
 <html>
   <head>
       <title>Freeway Project Creation</title>
      <meta name="decorator" content="atl.general" />   
   </head>

    <content tag="key">$action.space.key</content>

  <body>    

   #applyDecorator("root")
     #decoratorParam("helper" $action.helper)
     #decoratorParam("context" "space-administration")
     #decoratorParam("mode" "view-space-administration")

    #applyDecorator ("root")
     #decoratorParam ("context" "spaceadminpanel")
     #decoratorParam ("selection" "add-fpc-label-action-web-ui")
     #decoratorParam ("title" $action.getText("action.name"))
     #decoratorParam ("selectedTab" "admin")
     #decoratorParam("helper" $action.helper) 


      <div >
            <table width="95%" border=0 cellspacing=0 cellpadding=5>
              <form name="editspace" method="POST" >

        #bodytag( "TextField" "label='space-name'" "name='name'" "size=40" )
        #param ("labelwidth" "100")
        #param ("tdcolor" "f0f0f0")
        #end

            <tr>
                <td colspan="2" align="center">
                  #tag( "Submit" "name='confirm'" "value='update.name'" "theme='notable'" )
                #tag( "Submit" "name='cancel'" "value='cancel.name'" "theme='notable'" )
               </td>
             </tr>

        </form>
     </table>
  </div>



    #end
   #end    
  </body>
 </html>

我想了解这种与我的 JAVA 类的交互将如何产生类似的输出。例如:我将在名称的文本框中输入名称并点击保存,在结果页面上它必须显示输入的名称。

到目前为止,我指定的 java 类看起来像这样。

  package com.atlassian.myorg;

 import com.atlassian.confluence.core.ConfluenceActionSupport;
 import com.atlassian.confluence.pages.AbstractPage;
 import com.atlassian.confluence.pages.actions.PageAware;
 import com.opensymphony.xwork.Action;

 /**
   * The simplest action possible
 */
 public class FreewayProjectAction extends ConfluenceActionSupport 
  {
     @Override
      public String execute() throws Exception
   {
       return Action.SUCCESS;
  }

 }

所以我有3个问题:

  1. 当我将鼠标悬停在“保存”按钮上时,“编辑空间详细信息”会显示以下 URL“http://localhost:1990/confluence/spaces/doeditspace.action?key=LBTEST”。我假设它的管理 Java 类是 EditSpaceDetails。那么当我们尝试保存空间的编辑操作时,该类中的 doEdit() 方法(请参见此处)是否生效?我可以查看专门用于此编辑空间详细信息操作的映射的 xml 吗?我的假设是否正确?

  2. 为了拥有我之前提到的这样一个功能,即显示在我的自定义页面中输入的名称,如上所述,我的 Java 类中需要进行哪些更改。

  3. 在我刚刚自定义的页面中,有文本框,标签是 'Name' 。我应该使用不同的 xml 以便我可以提供像“项目名称”这样的自定义标签吗?

请给我同样的建议。

谢谢安吉

4

1 回答 1

1

回答您的第一个问题 - 如果您查看confluence-core/confluence/src/etc/java/xwork.xml ,您将能够更深入地了解 xwork 操作映射、拦截器和可能的结果类型。

以下示例是您的“doeditspace.action”的相应映射:

<action name="doeditspace" class="com.atlassian.confluence.spaces.actions.EditSpaceAction" method="doEdit">
    <param name="RequireSecurityToken">true</param>
    <result name="error" type="velocity">/spaces/editspace.vm</result>
    <result name="input" type="velocity">/spaces/editspace.vm</result>
    <result name="cancel" type="redirect">viewspacedetails.action?key=${key}</result>
    <result name="success" type="redirect">viewspacedetails.action?key=${key}</result>
</action>

因此,如果您的执行方法的返回值是ActionType.SUCCESS或“成功”,则请求将被重定向到viewspacedetails操作。

其他信息记录在 Atlassian 开发者网站中: https ://developer.atlassian.com/display/CONFDEV/XWork-WebWork+Module

于 2012-10-02T18:54:43.213 回答