sâmbătă, 12 decembrie 2015

[OmniFaces utilities 2.3] Get the typed Object value of the given tag attribute


[OmniFaces utilities] The getObject() returns the typed Object value of the given tag attribute.

Method:
Usage:

Suppose that we have a custom tag as below (is not important what it does; important is to notice that it supports an attribute of type String (named text), one of type boolean (named uppercase) and one that can be an Object (named repeat)):

<mt:textrepeat text="Vamos Rafa!" uppercase="true" repeat="5 step 3"/>

Now, if we write a custom tag handler for this custom tag, we can use the OmniFaces Facelets utility methods to access the values of the above attributes. For typed-Objects we will use Facelets#getObject()  that returns the typed Object value of the given tag attribute, and for simple Objects, we will use the Facelets#getObject() that returns the Object value of the given tag attribute:

import org.omnifaces.util.Facelets;
...
protected final TagAttribute text;
protected final TagAttribute repeat;
protected final TagAttribute uppercase;

public TextRepeatTagHandler(TagConfig config) {
 super(config);
 this.text = this.getRequiredAttribute("text");                     
 this.repeat = this.getRequiredAttribute("repeat");
 this.uppercase = this.getAttribute("uppercase");
}

@Override
public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
       
 String textValue = Facelets.getObject(ctx, text, String.class);       
 boolean uppercaseValue = Facelets.getObject(ctx, uppercase, Boolean.class);
 Object repeat = Facelets.getObject(repeat, ctx);
 // ... do something with these values if they are not null
}
...

Niciun comentariu:

Trimiteți un comentariu