...
- Adnotację
Javadoc |
---|
displayValue | @Validator |
---|
property | javadoc.plusworkflow |
---|
className | com.suncode.pwfl.workflow.form.validator.annotation.Validator |
---|
|
(jeżeli akcja nie jest definiowana we wtyczce, musi ona pochodzić z pakietu com.suncode
) - Publiczną metodę oznaczoną adnotacją
Javadoc |
---|
displayValue | @Define |
---|
property | javadoc.plusworkflow |
---|
className | com.suncode.pwfl.component.annotation.Define |
---|
|
z jednym parametrem Javadoc |
---|
property | javadoc.plusworkflow |
---|
className | com.suncode.pwfl.workflow.form.validator.ValidatorDefinitionBuilder |
---|
|
- Publiczną metodę o nazwie validate, która odpowiada za przeprowadzenie walidacji formularza.
Przykładowa definicja przedstawiona jest poniżej:
Code Block |
---|
language | java |
---|
linenumbers | true |
---|
|
@Validator
public class PeselValidator
{
private final String PESEL_REGEX = "^\\d{11}$";
@Define
public void definition( ValidatorDefinitionBuilder builder )
{
builder
.id( "pesel-validator" )
.name( "validator.pesel" )
.description( "validator.pesel.desc" )
.category( Categories.TEST )
.parameter()
.id( "pesel_param" )
.name( "validator.pesel.parameter.name" )
.description( "validator.pesel.parameter.desc" )
.type( Types.VARIABLE)
.create();
}
//Metoda walidująca
public void validate( @Param( value = "pesel_param" ) Variable pesel, ValidationErrors errors,
Translator translator )
{
boolean isPesel = Pattern.matches( PESEL_REGEX, (String) pesel.getValue() );
if ( isPesel == false )
{
errors.add( translator.getMessage( "validator.pesel.invalid" ), pesel.getId() );
}
}
} |
Implementacja
...
funckcji walidującej
Zdefiniowana na serwerze akcja formularza musi zostać zarejestrowana i zaimplementowana po stronie przeglądarki. Rejestrację umożliwia klasa
Jsdoc |
---|
property | jsdoc.plusworkflow |
---|
className | PW.form.action.Actions |
---|
|
za pomocą metody
Jsdoc |
---|
displayValue | create |
---|
property | jsdoc.plusworkflow |
---|
className | PW.form.action.Actions.html#method_create |
---|
|
. Pierwszym parametrem metody jest
id akcji (id musi odpowiadać tej akcji, która została zdefiniowana na serwerze), drugim parametrem jest
obiekt implementacji akcji: Code Block |
---|
language | js |
---|
linenumbers | true |
---|
|
PW.FormActions.create('hide-variables', {
init: function(){
this.variables = this.get("variables");
this.variablesNames = [];
},
enable: function(){
this.hideVariables();
},
disable: function(){
this.showVariables();
},
hideVariables: function() {
this.setVariablesVisibility(false);
},
showVariables: function() {
this.setVariablesVisibility(true);
},
setVariablesVisibility: function(visible) {
PW.each(this.variables, function(variable){
if(visible){
variable.show();
}
else{
variable.hide();
}
}, this);
}
}); |
Akcje domyślne
W celu ułatwienia tworzenia akcji które reagują na domyślne zdarzenia elementów docelowych możliwe jest zdefiniowanie tzw. akcji domyślnych.
Twórca akcji może zadeklarować funkcje, które wykonają się automatycznie, jeżeli wystąpi zdarzenie skojarzone z elementem docelowym akcji np. jeżeli akcja dodana jest do przycisku, to klikniecie w ten przycisk spowoduje wywołanie zdefiniowanej akcji domyślnej.
Info |
---|
Akcje domyślne są wywoływane tylko jeżeli warunek wykonania akcji jest spełniony. Parametry wywołania akcji domyślnej są takie same jak parametry zdarzeń, które są źródłem wywołania akcji domyślnej. |
Zdarzenia domyślne w zależności od elementu docelowego akcji:
Element docelowy | Nazwa funkcji | Domyślne zdarzenie | Opis |
---|
ActionDestination.button() | button | click ( Jsdoc |
---|
displayValue | doc |
---|
property | jsdoc.plusworkflow |
---|
className | PW.form.button.Button |
---|
| ) | Funkcja wywoływana jest po kliknięciu na przycisk, do którego dodana jest akcja. Tip |
---|
Można przerwać akceptację formularza poprzez zwrócenie false : Code Block |
---|
| defaultActions: {
button: function(button){
// do some job
return false;
}
} |
|
|
ActionDestination.variable() | variable | change ( Jsdoc |
---|
displayValue | doc |
---|
property | jsdoc.plusworkflow |
---|
className | PW.form.variable.Variable |
---|
| ) | Funkcja wywoływana jest po zmianie wartości zmiennej, do której dodana jest akcja. |
ActionDestination.variableSet() | variableSet | change ( Jsdoc |
---|
displayValue | doc |
---|
property | jsdoc.plusworkflow |
---|
className | PW.form.field.VariableSet |
---|
| ) | Funkcja wywoływana jest jeżeli zmieni się wartość jakiejkolwiek zmiennej należącej do tabeli dynamicznej, do której dodana jest akcja. |
Poniżej przykładowa implementacja akcji pokazującej skonfigurowaną wiadomość. W zależności od elementu docelowego wiadomość pokaże się przy naciśnięciu przycisku, zmianie wartości zmiennej lub zmianie danych w tabelce.
Code Block |
---|
PW.FormActions.create('message', {
// domyślne akcje
defaultActions: {
button: function(button){
this.showMsg();
},
variable: function(variable, newValue, oldValue){
this.showMsg();
},
variableSet: function(variableSet, added, updated, removed){
this.showMsg();
}
},
showMsg: function(){
ServiceFactory.getMessageService().showSuccess(this.get('msg'));
}
}); |
Rejestracja akcji we wtyczce
...
Rejestracja walidatora we wtyczce
Jeżeli walidator jest definiowany we wtyczce to należy dodatkowo zaznaczyć, że wtyczka ta udostępnia akcjekomponenty. W tym celu należy w pliku suncode-plugin.xml dodać wpis:
Code Block |
---|
|
<!-- Udostępnianie akcjiwalidatorów -->
<workflow-components key="components" /> |