08-09-2017 06:55 AM
i have a surf extensions like this on my share project:
==================================================================
alfresco/web-extensions/site-data/extensions/my-module-actions-extension-modules
==================================================================
<extension>
<modules>
<module>
<id>signed-as-aruba</id>
<version>${project.version}</version>
<auto-deploy>true</auto-deploy>
<configurations>
<config evaluator="string-compare" condition="DocumentLibrary">
<indicators>
<indicator id="indicator.isSigned"
icon="signed-doc-16.png"
index="100"
label="indicator.isSigned.label">
<evaluator>alfresco.evaluator.isSignable</evaluator>
</indicator>
</indicators>
<toolbar-actions>
<action type="action-link" id="doclib.action.signedAsAruba" label="menu.selected-items.signedAsAruba" />
</toolbar-actions>
</config>
<config evaluator="string-compare" condition="DocLibActions">
<actions>
<action id="doclib.action.signedAsAruba"
icon="signed-doc-16.png"
type="javascript"
label="doclib.action.signedAsAruba.label">
<param name="function">onActionFormDialog</param>
<param name="itemKind">action</param>
<param name="itemId">signed-as-aruba</param> <!-- Repository action id = Spring Bean id -->
<param name="mode">create</param>
<param name="destination">{node.nodeRef}</param>
<param name="successMessage">sign.doclib.action.signed.msg.success</param>
<param name="failureMessage">sign.doclib.action.signed.msg.failure</param>
<evaluator>alfresco.evaluator.isSignable</evaluator>
</action>
<action id="sign.doclib.action.callWebScript"
icon="callws"
type="javascript"
label="sign.doclib.action.callWebScript.label">
<param name="active">true</param>
<param name="function">onActionCallWebScript</param>
<param name="successMessage">sign.doclib.action.callWebScript.msg.success</param>
<param name="failureMessage">sign.doclib.action.callWebScript.msg.failure</param>
</action>
</actions>
<actionGroups>
<actionGroup id="document-browse">
<action index="400" id="doclib.action.signedAsAruba" />
</actionGroup>
<actionGroup id="document-details">
<action index="400" id="doclib.action.signedAsAruba" />
</actionGroup>
<actionGroup id="folder-browse">
<action index="400" id="doclib.action.signedAsAruba" />
</actionGroup>
</actionGroups>
</config>
<config evaluator="string-compare" condition="DocLibCustom">
<dependencies>
<js src="components/documentlibrary/custom-doclib-actions.js" />
</dependencies>
</config>
<!-- ====== -->
<!-- FORMS -->
<!-- ====== -->
<config evaluator="string-compare" condition="signed-as-aruba">
<forms>
<form>
<field-visibility>
<show id="my_form_sign_firma.opt"/>
<show id="my_form_sign_firma.luogo"/>
<show id="my_form_sign_firma.motivo"/>
<show id="my_form_sign_firma.username"/>
<show id="my_form_sign_firma.password"/>
<show id="my_form_sign_firma.tipo"/>
</field-visibility>
<appearance>
<field id="my_form_sign_firma.opt" label-id="property.form.sign.my_form_sign_firma.opt">
<control template="/org/alfresco/components/form/controls/textfield.ftl" />
</field>
<field id="my_form_sign_firma.luogo" label-id="property.form.sign.my_form_sign_firma.luogo">
<control template="/org/alfresco/components/form/controls/textfield.ftl" />
</field>
<field id="my_form_sign_firma.motivo" label-id="property.form.sign.my_form_sign_firma.motivo">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="my_form_sign_firma.username" label-id="property.form.sign.my_form_sign_firma.username">
<control template="/org/alfresco/components/form/controls/textfield.ftl" />
</field>
<field id="my_form_sign_firma.password" label-id="property.form.sign.my_form_sign_firma.password">
<control template="/org/alfresco/components/form/controls/textfield.ftl" />
</field>
<field id="my_form_sign_firma.tipo" label-id="property.form.sign.my_form_sign_firma.tipo">
<control template="/org/alfresco/components/form/controls/selectone.ftl"/>
<control-param name="options">PADES,CADES,DETACHED</control-param>
<control-param name="insertBlank">true</control-param>
</field>
</appearance>
</form>
</forms>
</config>
</configurations>
</module>
</modules>
</extension>
===============================================================
,while in my repo project i have set:
==================================================================
alfresco/module/mymodule/context/webscript-context.xml
or
alfresco/module/mymodule/context/action-context.xml
==================================================================
<bean id="signed-as-aruba" class="my.module.actions.SignAction.java" parent="action-executer">
<property name="contentService">
<ref bean="ContentService"/>
</property>
<property name="nodeService">
<ref bean="NodeService"/>
</property>
<property name="configurazioniBean">
<ref bean="configurazioniBeanCompleto" />
</property>
</bean>
============================================================
when i start share and click on the label of the custom action on the right menu of the content, i 'm correctly redirect to the class java action i have realized:
================================================================
my.module.actions.SignAction.java
================================================================
public class SignAction extends ActionExecuterAbstractBase {
private static Log logger = LogFactory.getLog(SignAction.class);
private ContentService contentService;
private NodeService nodeService;
private ConfigurazioniBean configurazioniBean;
@SuppressWarnings("unchecked")
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
logger.debug("START SERVICE SignAction#executeImpl");
try {
if (action.getParameterValues() == null || action.getParameterValues().size() == 0) {
throw new Exception("NO parameters value are arrived here");//HERE THROW THE EXCEPTION
}
logger.debug("END SignAction#executeImpl");
} catch (Throwable t) {
throw new RuntimeException("Something is wrong",t);
}
}
@Override
protected void addParameterDefinitions(List<ParameterDefinition> paramList) {
}
public void setContentService(ContentService contentService) {
this.contentService = contentService;
}
public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
public void setConfigurazioniBean(ConfigurazioniBean configurazioniBean) {
this.configurazioniBean = configurazioniBean;
}
}
================================================================
but i always arrived to the java class of the action whit a null parameters values for the method org.alfresco.service.cmr.action.ParameterizedItem.getParameterValues() , i try everythng but i msut do some thing wrong with the configuration.
08-11-2017 12:59 AM
You must define each of your parameters via the action executor method addParameterDefinitions - otherwise they will not be mapped by the action form processor from the form inputs to the parameters of the action object.
08-11-2017 12:59 AM
You must define each of your parameters via the action executor method addParameterDefinitions - otherwise they will not be mapped by the action form processor from the form inputs to the parameters of the action object.
08-11-2017 01:10 AM
Ty Axel that is the corrected answer. i have figured out by myself yesterday but i forgot to update the question , i still encounter another error i have posted to another ticket because it's separated from this issue A value for the mandatory parameter <MYPARAM> has not been set on the rule <ID_RULE>
Explore our Alfresco products with the links below. Use labels to filter content by product module.