1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.facelets;
21
22 import org.apache.myfaces.tobago.component.Attributes;
23 import org.apache.myfaces.tobago.event.ResetFormActionListener;
24 import org.apache.myfaces.tobago.event.ResetInputActionListener;
25 import org.apache.myfaces.tobago.event.ValueExpressionResetInputActionListener;
26 import org.apache.myfaces.tobago.util.ComponentUtils;
27
28 import javax.el.ValueExpression;
29 import javax.faces.component.ActionSource;
30 import javax.faces.component.UIComponent;
31 import javax.faces.view.facelets.ComponentHandler;
32 import javax.faces.view.facelets.FaceletContext;
33 import javax.faces.view.facelets.TagAttribute;
34 import javax.faces.view.facelets.TagConfig;
35 import javax.faces.view.facelets.TagException;
36 import javax.faces.view.facelets.TagHandler;
37 import java.io.IOException;
38
39 public class ResetInputActionListenerHandler extends TagHandler {
40
41 private final TagAttribute execute;
42
43 public ResetInputActionListenerHandler(final TagConfig config) {
44 super(config);
45 execute = getAttribute(Attributes.execute.getName());
46 }
47
48 @Override
49 public void apply(final FaceletContext faceletContext, final UIComponent parent) throws IOException {
50 if (parent instanceof ActionSource) {
51 if (ComponentHandler.isNew(parent)) {
52 final ActionSource actionSource = (ActionSource) parent;
53 if (execute == null) {
54 actionSource.addActionListener(new ResetFormActionListener());
55 } else if (execute.isLiteral()) {
56 actionSource.addActionListener(new ResetInputActionListener(ComponentUtils.splitList(execute.getValue())));
57 } else {
58 final ValueExpression forValueExpression = execute.getValueExpression(faceletContext, String.class);
59 actionSource.addActionListener(new ValueExpressionResetInputActionListener(forValueExpression));
60 }
61 }
62 } else {
63 throw new TagException(tag, "Parent is not of type ActionSource, type is: " + parent);
64 }
65 }
66 }
67
68