1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.uif.element;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.core.api.exception.RiceRuntimeException;
20 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
21 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
22 import org.kuali.rice.krad.datadictionary.validator.ErrorReport;
23 import org.kuali.rice.krad.datadictionary.validator.ValidationTrace;
24 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
25 import org.kuali.rice.krad.uif.UifConstants;
26 import org.kuali.rice.krad.uif.UifParameters;
27 import org.kuali.rice.krad.uif.UifPropertyPaths;
28 import org.kuali.rice.krad.uif.component.Component;
29 import org.kuali.rice.krad.uif.component.ComponentSecurity;
30 import org.kuali.rice.krad.uif.field.DataField;
31 import org.kuali.rice.krad.uif.service.ExpressionEvaluatorService;
32 import org.kuali.rice.krad.uif.util.ExpressionUtils;
33 import org.kuali.rice.krad.uif.util.ScriptUtils;
34 import org.kuali.rice.krad.uif.view.FormView;
35 import org.kuali.rice.krad.uif.view.View;
36
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41
42
43
44
45
46
47
48 @BeanTag(name="action")
49 public class Action extends ContentElementBase {
50 private static final long serialVersionUID = 1025672792657238829L;
51
52 private String methodToCall;
53 private String actionEvent;
54 private String navigateToPageId;
55
56 private String actionScript;
57
58 private String actionLabel;
59 private Image actionImage;
60 private String actionImagePlacement;
61
62 private String jumpToIdAfterSubmit;
63 private String jumpToNameAfterSubmit;
64 private String focusOnIdAfterSubmit;
65
66 private boolean performClientSideValidation;
67 private boolean performDirtyValidation;
68
69 private String preSubmitCall;
70 private boolean ajaxSubmit;
71
72 private String ajaxReturnType;
73 private String refreshId;
74 private String refreshPropertyName;
75
76 private String successCallback;
77 private String errorCallback;
78
79 private String loadingMessageText;
80 private boolean disableBlocking;
81
82 private Map<String, String> additionalSubmitData;
83 private Map<String, String> actionParameters;
84
85 private boolean evaluateDisabledOnKeyUp;
86
87 private boolean disabled;
88 private String disabledReason;
89 private String disabledExpression;
90 private String disabledConditionJs;
91 private List<String> disabledConditionControlNames;
92
93 private List<String> disabledWhenChangedPropertyNames;
94 private List<String> enabledWhenChangedPropertyNames;
95
96 public Action() {
97 super();
98
99 actionImagePlacement = UifConstants.Position.LEFT.name();
100
101 ajaxSubmit = true;
102
103 successCallback = "";
104 errorCallback = "";
105 preSubmitCall = "";
106
107 additionalSubmitData = new HashMap<String, String>();
108 actionParameters = new HashMap<String, String>();
109
110 disabled = false;
111 disabledWhenChangedPropertyNames = new ArrayList<String>();
112 enabledWhenChangedPropertyNames = new ArrayList<String>();
113 }
114
115
116
117
118
119
120
121
122 public void performApplyModel(View view, Object model, Component parent) {
123 super.performApplyModel(view, model, parent);
124 disabledExpression = this.getPropertyExpression("disabled");
125 if (disabledExpression != null) {
126 ExpressionEvaluatorService expressionEvaluatorService =
127 KRADServiceLocatorWeb.getExpressionEvaluatorService();
128 disabledExpression = expressionEvaluatorService.replaceBindingPrefixes(view, this, disabledExpression);
129 disabled = (Boolean) expressionEvaluatorService.evaluateExpression(model, this.getContext(),
130 disabledExpression);
131 }
132 }
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 @Override
150 public void performFinalize(View view, Object model, Component parent) {
151 super.performFinalize(view, model, parent);
152
153 if (StringUtils.isNotEmpty(disabledExpression)
154 && !disabledExpression.equalsIgnoreCase("true")
155 && !disabledExpression.equalsIgnoreCase("false")) {
156 disabledConditionControlNames = new ArrayList<String>();
157 disabledConditionJs = ExpressionUtils.parseExpression(disabledExpression, disabledConditionControlNames);
158 }
159
160 List<String> adjustedDisablePropertyNames = new ArrayList<String>();
161 for (String propertyName : disabledWhenChangedPropertyNames) {
162 adjustedDisablePropertyNames.add(
163 KRADServiceLocatorWeb.getExpressionEvaluatorService().replaceBindingPrefixes(view, this,
164 propertyName));
165 }
166 disabledWhenChangedPropertyNames = adjustedDisablePropertyNames;
167
168 List<String> adjustedEnablePropertyNames = new ArrayList<String>();
169 for (String propertyName : enabledWhenChangedPropertyNames) {
170 adjustedEnablePropertyNames.add(
171 KRADServiceLocatorWeb.getExpressionEvaluatorService().replaceBindingPrefixes(view, this,
172 propertyName));
173 }
174 enabledWhenChangedPropertyNames = adjustedEnablePropertyNames;
175
176
177 if (actionImage != null && StringUtils.isNotBlank(actionImagePlacement) && StringUtils.isNotBlank(
178 actionLabel)) {
179 actionImage.setAltText("");
180 }
181
182 if (!actionParameters.containsKey(UifConstants.UrlParams.ACTION_EVENT) && StringUtils.isNotBlank(actionEvent)) {
183 actionParameters.put(UifConstants.UrlParams.ACTION_EVENT, actionEvent);
184 }
185
186 if (StringUtils.isNotBlank(navigateToPageId)) {
187 actionParameters.put(UifParameters.NAVIGATE_TO_PAGE_ID, navigateToPageId);
188 if (StringUtils.isBlank(methodToCall)) {
189 actionParameters.put(UifConstants.CONTROLLER_METHOD_DISPATCH_PARAMETER_NAME,
190 UifConstants.MethodToCallNames.NAVIGATE);
191 }
192 }
193
194 if (!actionParameters.containsKey(UifConstants.CONTROLLER_METHOD_DISPATCH_PARAMETER_NAME) && StringUtils
195 .isNotBlank(methodToCall)) {
196 actionParameters.put(UifConstants.CONTROLLER_METHOD_DISPATCH_PARAMETER_NAME, methodToCall);
197 }
198
199 setupRefreshAction(view);
200
201 buildActionData(view, model, parent);
202
203
204 String onClickScript = this.getOnClickScript();
205 if (StringUtils.isNotBlank(actionScript)) {
206 onClickScript = ScriptUtils.appendScript(onClickScript, actionScript);
207 } else {
208 onClickScript = ScriptUtils.appendScript(onClickScript, "actionInvokeHandler(this);");
209 }
210
211
212 if (view instanceof FormView) {
213 if (((FormView) view).isApplyDirtyCheck() && performDirtyValidation) {
214 onClickScript = "if (checkDirty(e) == false) { " + onClickScript + " ; } ";
215 }
216 }
217
218
219 if (disabled) {
220 this.addStyleClass("disabled");
221 this.setSkipInTabOrder(true);
222 }
223 onClickScript = "if(jQuery(this).hasClass('disabled')){ return false; }" + onClickScript;
224
225 setOnClickScript("e.preventDefault();" + onClickScript);
226 }
227
228
229
230
231
232
233
234 protected void setupRefreshAction(View view) {
235
236 if (StringUtils.isNotBlank(refreshPropertyName) || StringUtils.isNotBlank(refreshId)) {
237 ajaxReturnType = UifConstants.AjaxReturnTypes.UPDATECOMPONENT.getKey();
238 }
239
240
241
242 Component refreshComponent = null;
243 if (StringUtils.isNotBlank(refreshPropertyName)) {
244
245 if (refreshPropertyName.startsWith(UifConstants.NO_BIND_ADJUST_PREFIX)) {
246 refreshPropertyName = StringUtils.removeStart(refreshPropertyName, UifConstants.NO_BIND_ADJUST_PREFIX);
247 } else if (StringUtils.isNotBlank(view.getDefaultBindingObjectPath())) {
248 refreshPropertyName = view.getDefaultBindingObjectPath() + "." + refreshPropertyName;
249 }
250
251 DataField dataField = view.getViewIndex().getDataFieldByPath(refreshPropertyName);
252 if (dataField != null) {
253 refreshComponent = dataField;
254 refreshId = refreshComponent.getId();
255 }
256 } else if (StringUtils.isNotBlank(refreshId)) {
257 Component component = view.getViewIndex().getComponentById(refreshId);
258 if (component != null) {
259 refreshComponent = component;
260 }
261 }
262
263 if (refreshComponent != null) {
264 refreshComponent.setRefreshedByAction(true);
265
266
267 Component initialComponent = view.getViewIndex().getInitialComponentStates().get(
268 refreshComponent.getBaseId());
269 if (initialComponent != null) {
270 initialComponent.setRefreshedByAction(true);
271 view.getViewIndex().getInitialComponentStates().put(refreshComponent.getBaseId(), initialComponent);
272 }
273 }
274 }
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289 protected void buildActionData(View view, Object model, Component parent) {
290
291 addDataAttribute("ajaxsubmit", Boolean.toString(ajaxSubmit));
292 addDataAttributeIfNonEmpty("successcallback", this.successCallback);
293 addDataAttributeIfNonEmpty("errorcallback", this.errorCallback);
294 addDataAttributeIfNonEmpty("presubmitcall", this.preSubmitCall);
295 addDataAttributeIfNonEmpty("loadingmessage", this.loadingMessageText);
296 addDataAttributeIfNonEmpty("disableblocking", Boolean.toString(this.disableBlocking));
297 addDataAttributeIfNonEmpty("ajaxreturntype", this.ajaxReturnType);
298 addDataAttributeIfNonEmpty("refreshid", this.refreshId);
299 addDataAttribute("validate", Boolean.toString(this.performClientSideValidation));
300
301
302 Map<String, String> submitData = new HashMap<String, String>();
303 for (String key : actionParameters.keySet()) {
304 String parameterPath = key;
305 if (!key.equals(UifConstants.CONTROLLER_METHOD_DISPATCH_PARAMETER_NAME)) {
306 parameterPath = UifPropertyPaths.ACTION_PARAMETERS + "[" + key + "]";
307 }
308 submitData.put(parameterPath, actionParameters.get(key));
309 }
310
311 for (String key : additionalSubmitData.keySet()) {
312 submitData.put(key, additionalSubmitData.get(key));
313 }
314
315
316
317 submitData.put(UifConstants.UrlParams.SHOW_HISTORY, "false");
318 submitData.put(UifConstants.UrlParams.SHOW_HOME, "false");
319
320
321 if (focusOnIdAfterSubmit.equalsIgnoreCase(UifConstants.Order.SELF.toString())) {
322 focusOnIdAfterSubmit = this.getId();
323 submitData.put("focusId", focusOnIdAfterSubmit);
324 }
325 else if(focusOnIdAfterSubmit.equalsIgnoreCase(UifConstants.Order.NEXT_INPUT.toString())){
326 focusOnIdAfterSubmit = UifConstants.Order.NEXT_INPUT.toString() + ":" + this.getId();
327 submitData.put("focusId", focusOnIdAfterSubmit);
328 }
329 else {
330
331 submitData.put("focusId", focusOnIdAfterSubmit);
332 }
333
334
335 if (StringUtils.isBlank(jumpToIdAfterSubmit) && StringUtils.isBlank(jumpToNameAfterSubmit)) {
336 jumpToIdAfterSubmit = this.getId();
337 submitData.put("jumpToId", jumpToIdAfterSubmit);
338 } else if (StringUtils.isNotBlank(jumpToIdAfterSubmit)) {
339 submitData.put("jumpToId", jumpToIdAfterSubmit);
340 } else {
341 submitData.put("jumpToName", jumpToNameAfterSubmit);
342 }
343
344 addDataAttribute("submitData", ScriptUtils.toJSON(submitData));
345 }
346
347
348
349
350 @Override
351 public List<Component> getComponentsForLifecycle() {
352 List<Component> components = super.getComponentsForLifecycle();
353
354 components.add(actionImage);
355
356 return components;
357 }
358
359
360
361
362
363
364
365
366
367
368
369
370
371 @BeanTagAttribute(name="methodToCall")
372 public String getMethodToCall() {
373 return this.methodToCall;
374 }
375
376
377
378
379
380
381 public void setMethodToCall(String methodToCall) {
382 this.methodToCall = methodToCall;
383 }
384
385
386
387
388
389
390
391
392
393
394
395
396 @BeanTagAttribute(name="actionLabel")
397 public String getActionLabel() {
398 return this.actionLabel;
399 }
400
401
402
403
404
405
406 public void setActionLabel(String actionLabel) {
407 this.actionLabel = actionLabel;
408 }
409
410
411
412
413
414
415
416
417
418
419
420
421
422 @BeanTagAttribute(name="actionImage",type=BeanTagAttribute.AttributeType.SINGLEBEAN)
423 public Image getActionImage() {
424 return this.actionImage;
425 }
426
427
428
429
430
431
432 public void setActionImage(Image actionImage) {
433 this.actionImage = actionImage;
434 }
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450 @BeanTagAttribute(name="navigateToPageId")
451 public String getNavigateToPageId() {
452 return this.navigateToPageId;
453 }
454
455
456
457
458
459
460 public void setNavigateToPageId(String navigateToPageId) {
461 this.navigateToPageId = navigateToPageId;
462 actionParameters.put(UifParameters.NAVIGATE_TO_PAGE_ID, navigateToPageId);
463 this.methodToCall = UifConstants.MethodToCallNames.NAVIGATE;
464 }
465
466
467
468
469
470
471
472
473
474
475
476
477 @BeanTagAttribute(name="actionEvent")
478 public String getActionEvent() {
479 return actionEvent;
480 }
481
482
483
484
485
486
487 public void setActionEvent(String actionEvent) {
488 this.actionEvent = actionEvent;
489 }
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510 @BeanTagAttribute(name="additionalSubmitData", type = BeanTagAttribute.AttributeType.MAPVALUE)
511 public Map<String, String> getAdditionalSubmitData() {
512 return additionalSubmitData;
513 }
514
515
516
517
518
519
520 public void setAdditionalSubmitData(Map<String, String> additionalSubmitData) {
521 this.additionalSubmitData = additionalSubmitData;
522 }
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540 @BeanTagAttribute(name="actionParameters", type= BeanTagAttribute.AttributeType.MAPVALUE)
541 public Map<String, String> getActionParameters() {
542 return this.actionParameters;
543 }
544
545
546
547
548
549
550 public void setActionParameters(Map<String, String> actionParameters) {
551 this.actionParameters = actionParameters;
552 }
553
554
555
556
557
558
559
560 public void addActionParameter(String parameterName, String parameterValue) {
561 if (actionParameters == null) {
562 this.actionParameters = new HashMap<String, String>();
563 }
564
565 this.actionParameters.put(parameterName, parameterValue);
566 }
567
568
569
570
571 public String getActionParameter(String parameterName) {
572 return this.actionParameters.get(parameterName);
573 }
574
575
576
577
578
579
580 @Override
581 public void setComponentSecurity(ComponentSecurity componentSecurity) {
582 if (!(componentSecurity instanceof ActionSecurity)) {
583 throw new RiceRuntimeException("Component security for Action should be instance of ActionSecurity");
584 }
585
586 super.setComponentSecurity(componentSecurity);
587 }
588
589 @Override
590 protected Class<? extends ComponentSecurity> getComponentSecurityClass() {
591 return ActionSecurity.class;
592 }
593
594
595
596
597 @BeanTagAttribute(name="jumpToIdAfterSubmit")
598 public String getJumpToIdAfterSubmit() {
599 return this.jumpToIdAfterSubmit;
600 }
601
602
603
604
605
606
607
608
609
610
611
612
613 public void setJumpToIdAfterSubmit(String jumpToIdAfterSubmit) {
614 this.jumpToIdAfterSubmit = jumpToIdAfterSubmit;
615 }
616
617
618
619
620
621
622
623
624
625
626
627 @BeanTagAttribute(name="jumpToNameAfterSubmit")
628 public String getJumpToNameAfterSubmit() {
629 return this.jumpToNameAfterSubmit;
630 }
631
632
633
634
635 public void setJumpToNameAfterSubmit(String jumpToNameAfterSubmit) {
636 this.jumpToNameAfterSubmit = jumpToNameAfterSubmit;
637 }
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656 @BeanTagAttribute(name="focusOnIdAfterSubmit")
657 public String getFocusOnIdAfterSubmit() {
658 return this.focusOnIdAfterSubmit;
659 }
660
661
662
663
664 public void setFocusOnIdAfterSubmit(String focusOnIdAfterSubmit) {
665 this.focusOnIdAfterSubmit = focusOnIdAfterSubmit;
666 }
667
668
669
670
671
672
673 @BeanTagAttribute(name="performClientSideValidation")
674 public boolean isPerformClientSideValidation() {
675 return this.performClientSideValidation;
676 }
677
678
679
680
681
682
683 public void setPerformClientSideValidation(boolean performClientSideValidation) {
684 this.performClientSideValidation = performClientSideValidation;
685 }
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701 @BeanTagAttribute(name="actionScript")
702 public String getActionScript() {
703 return this.actionScript;
704 }
705
706
707
708
709 public void setActionScript(String actionScript) {
710 if (!StringUtils.endsWith(actionScript, ";")) {
711 actionScript = actionScript + ";";
712 }
713 this.actionScript = actionScript;
714 }
715
716
717
718
719 public void setPerformDirtyValidation(boolean performDirtyValidation) {
720 this.performDirtyValidation = performDirtyValidation;
721 }
722
723
724
725
726 @BeanTagAttribute(name="performDirtyValidation")
727 public boolean isPerformDirtyValidation() {
728 return performDirtyValidation;
729 }
730
731
732
733
734
735
736 @BeanTagAttribute(name="disabled")
737 public boolean isDisabled() {
738 return disabled;
739 }
740
741
742
743
744
745
746 public void setDisabled(boolean disabled) {
747 this.disabled = disabled;
748 }
749
750
751
752
753
754
755
756
757 @BeanTagAttribute(name="disabledReason")
758 public String getDisabledReason() {
759 return disabledReason;
760 }
761
762
763
764
765
766
767 public void setDisabledReason(String disabledReason) {
768 this.disabledReason = disabledReason;
769 }
770 @BeanTagAttribute(name="actionImagePlacement")
771 public String getActionImagePlacement() {
772 return actionImagePlacement;
773 }
774
775
776
777
778
779
780
781
782
783 public void setActionImagePlacement(String actionImagePlacement) {
784 this.actionImagePlacement = actionImagePlacement;
785 }
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808 @BeanTagAttribute(name="preSubmitCall")
809 public String getPreSubmitCall() {
810 return preSubmitCall;
811 }
812
813
814
815
816
817
818 public void setPreSubmitCall(String preSubmitCall) {
819 this.preSubmitCall = preSubmitCall;
820 }
821
822
823
824
825
826
827
828 @BeanTagAttribute(name="ajaxSubmit")
829 public boolean isAjaxSubmit() {
830 return ajaxSubmit;
831 }
832
833
834
835
836
837
838 public void setAjaxSubmit(boolean ajaxSubmit) {
839 this.ajaxSubmit = ajaxSubmit;
840 }
841
842
843
844
845
846
847
848
849
850
851
852
853 @BeanTagAttribute(name="ajaxReturnType")
854 public String getAjaxReturnType() {
855 return this.ajaxReturnType;
856 }
857
858
859
860
861
862
863 public void setAjaxReturnType(String ajaxReturnType) {
864 this.ajaxReturnType = ajaxReturnType;
865 }
866
867
868
869
870
871
872 @BeanTagAttribute(name="displayResponseInLightBox")
873 public boolean isDisplayResponseInLightBox() {
874 return StringUtils.equals(this.ajaxReturnType, UifConstants.AjaxReturnTypes.DISPLAYLIGHTBOX.getKey());
875 }
876
877
878
879
880
881
882 public void setDisplayResponseInLightBox(boolean displayResponseInLightBox) {
883 if (displayResponseInLightBox) {
884 this.ajaxReturnType = UifConstants.AjaxReturnTypes.DISPLAYLIGHTBOX.getKey();
885 }
886
887 else if (StringUtils.equals(this.ajaxReturnType, UifConstants.AjaxReturnTypes.DISPLAYLIGHTBOX.getKey())) {
888 this.ajaxReturnType = UifConstants.AjaxReturnTypes.UPDATEPAGE.getKey();
889 }
890 }
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911 @BeanTagAttribute(name="successCallback")
912 public String getSuccessCallback() {
913 return successCallback;
914 }
915
916
917
918
919
920
921 public void setSuccessCallback(String successCallback) {
922 this.successCallback = successCallback;
923 }
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945 @BeanTagAttribute(name="errorCallback")
946 public String getErrorCallback() {
947 return errorCallback;
948 }
949
950
951
952
953
954
955 public void setErrorCallback(String errorCallback) {
956 this.errorCallback = errorCallback;
957 }
958
959
960
961
962
963
964
965
966
967
968
969 @BeanTagAttribute(name="refreshId")
970 public String getRefreshId() {
971 return refreshId;
972 }
973
974
975
976
977
978
979 public void setRefreshId(String refreshId) {
980 this.refreshId = refreshId;
981 }
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999 @BeanTagAttribute(name="refreshPropertyName")
1000 public String getRefreshPropertyName() {
1001 return refreshPropertyName;
1002 }
1003
1004
1005
1006
1007
1008
1009 public void setRefreshPropertyName(String refreshPropertyName) {
1010 this.refreshPropertyName = refreshPropertyName;
1011 }
1012
1013
1014
1015
1016
1017
1018 @BeanTagAttribute(name="loadingMessageText")
1019 public String getLoadingMessageText() {
1020 return loadingMessageText;
1021 }
1022
1023
1024
1025
1026
1027
1028 public void setLoadingMessageText(String loadingMessageText) {
1029 this.loadingMessageText = loadingMessageText;
1030 }
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047 @BeanTagAttribute(name="disableBlocking")
1048 public boolean isDisableBlocking() {
1049 return disableBlocking;
1050 }
1051
1052
1053
1054
1055
1056
1057 public void setDisableBlocking(boolean disableBlocking) {
1058 this.disableBlocking = disableBlocking;
1059 }
1060
1061
1062
1063
1064 @Override
1065 public void completeValidation(ValidationTrace tracer) {
1066 tracer.addBean(this);
1067
1068
1069 if (getActionLabel() == null && getActionImage() == null) {
1070 String currentValues [] = {"actionLabel =" + getActionLabel(),"actionImage =" + getActionImage()};
1071 tracer.createError("ActionLabel and/or actionImage must be set",currentValues);
1072 }
1073
1074
1075 if (getJumpToIdAfterSubmit() != null && getJumpToNameAfterSubmit() != null) {
1076 String currentValues [] = {"jumpToIdAfterSubmit =" + getJumpToIdAfterSubmit(),"jumpToNameAfterSubmit =" + getJumpToNameAfterSubmit()};
1077 tracer.createWarning("Only 1 jumpTo property should be set",currentValues);
1078 }
1079 super.completeValidation(tracer.getCopy());
1080 }
1081
1082
1083
1084
1085
1086
1087 @BeanTagAttribute(name="evaluateDisabledOnKeyUp")
1088 public boolean isEvaluateDisabledOnKeyUp() {
1089 return evaluateDisabledOnKeyUp;
1090 }
1091
1092
1093
1094
1095
1096
1097 public void setEvaluateDisabledOnKeyUp(boolean evaluateDisabledOnKeyUp) {
1098 this.evaluateDisabledOnKeyUp = evaluateDisabledOnKeyUp;
1099 }
1100
1101
1102
1103
1104
1105
1106 public String getDisabledConditionJs() {
1107 return disabledConditionJs;
1108 }
1109
1110
1111
1112
1113
1114
1115 public List<String> getDisabledConditionControlNames() {
1116 return disabledConditionControlNames;
1117 }
1118
1119
1120
1121
1122
1123
1124 @BeanTagAttribute(name="disabledWhenChangedPropertyNames", type = BeanTagAttribute.AttributeType.LISTVALUE)
1125 public List<String> getDisabledWhenChangedPropertyNames() {
1126 return disabledWhenChangedPropertyNames;
1127 }
1128
1129
1130
1131
1132
1133
1134 public void setDisabledWhenChangedPropertyNames(List<String> disabledWhenChangedPropertyNames) {
1135 this.disabledWhenChangedPropertyNames = disabledWhenChangedPropertyNames;
1136 }
1137
1138
1139
1140
1141
1142
1143 @BeanTagAttribute(name="enabledWhenChangedPropertyNames", type = BeanTagAttribute.AttributeType.LISTVALUE)
1144 public List<String> getEnabledWhenChangedPropertyNames() {
1145 return enabledWhenChangedPropertyNames;
1146 }
1147
1148
1149
1150
1151
1152
1153 public void setEnabledWhenChangedPropertyNames(List<String> enabledWhenChangedPropertyNames) {
1154 this.enabledWhenChangedPropertyNames = enabledWhenChangedPropertyNames;
1155 }
1156 }