Новое пользовательское действие с параметрами в Alfresco - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу сделать пользовательское действие, связанное с правилом.Я создал свою структуру проекта с помощью этой страницы: http://wiki.alfresco.com/wiki/Managing_Alfresco_Lifecyle_with_Maven Я использовал это руководство http://wiki.alfresco.com/wiki/Custom_Action_UI для разработки проекта.

Моя проблема: я создал свое пользовательское действие.Я выбираю его в Alfresco UI и нажимаю кнопку «Установить значения и добавить», но когда я ввожу значение параметра, он не сохраняется.Я не знаю, нужно ли мне где-то инициализировать его ... но метод "prepareForSave" никогда не вызывается, только когда выполняется пользовательское действие.Тогда значение параметра никогда не сохраняется, и я не знаю, как это сделать.

Я определил параметр в методе addParameterDefinitions:

protected void addParameterDefinitions(List<ParameterDefinition> paramList) {
        paramList.add(new ParameterDefinitionImpl(PARAM_CUSTOM_URL, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PARAM_CUSTOM_URL)));

}

JSP:

<r:page titleId="title_custom_url_action_executer">
<f:view>   
<%-- load a bundle of properties with I18N strings --%>
<r:loadBundle var="msg"/>

<h:form acceptcharset="UTF-8" id="custom_url_action">
......
<tr>
<td valign="top"><h:outputText value="#{msg.custom_url}"/>:</td>
<td width="90%">
   <h:inputText id="custom_url" value="#{WizardManager.bean.actionProperties.custom_url}" size="50" maxlength="1024" />
</td>
</tr>
......
</h:form>
</f:view>
</r:page>

Мой ActionHandler:

public class UrlActionHandler extends BaseActionHandler{

    protected static final Logger LOG = LoggerFactory.getLogger(UrlActionHandler.class);

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public final static String PROP_CUSTOM_URL = "custom-url";

       public String getJSPPath() {
          return "/jsp/actions/custom-url-action-executer.jsp";
       }           

       public void prepareForSave(Map<String, Serializable> actionProps, Map<String, Serializable> repoProps) {
          repoProps.put(UrlActionExecuter.PARAM_CUSTOM_URL, (String)actionProps.get(PROP_CUSTOM_URL));
       }

       public void prepareForEdit(Map<String, Serializable> actionProps, Map<String, Serializable> repoProps) {
          actionProps.put(PROP_CUSTOM_URL, (String)repoProps.get(UrlActionExecuter.PARAM_CUSTOM_URL));
       }

       public String generateSummary(FacesContext context, IWizardBean wizard, Map<String, Serializable> actionProps) {
          String url = (String)actionProps.get(PROP_CUSTOM_URL);
          if (url == null) {
              url = "";
          }           
          return MessageFormat.format(Application.getMessage(context, "custom-url-action-executer"), new Object[] {url});
       }       

}

Файл web-client-config-custom.xml:

<alfresco-config>    
   <config evaluator="string-compare" condition="Action Wizards">
      <action-handlers>
         <handler name="custom-url-action-executer" class="executer.UrlActionHandler" />
      </action-handlers>
   </config>       
</alfresco-config>
...