Dear Wiki user, You have subscribed to a wiki page or wiki category on "Jakarta-tapestry Wiki" for change notification.
The following page has been changed by AndreasBulling: http://wiki.apache.org/jakarta-tapestry/CreatingCustomTranslators The comment on the change is: Changed "sex" to "gender" and "null" to "getMessage()" ------------------------------------------------------------------------------ The important part is to implement the formatObject and parseText methods to convert between your object and string. - In my example I have a boolean object that is the gender (aka sex) of someone represented by the 1 character strings M and F, defaulting to M when undefined. + In my example I have a boolean object that is the gender of someone represented by the 1 character strings M and F, defaulting to M when undefined. {{{ package uk.org.chandlerfamily.tapestry.translators; - - //TODO: Rename Sex to Gender - change hivemodule.xml and useage in Create - import java.util.Locale; @@ -21, +18 @@ import org.apache.tapestry.form.translator.AbstractTranslator; import org.apache.tapestry.valid.ValidatorException; - public class Sex extends AbstractTranslator { + public class Gender extends AbstractTranslator { - private String _Sex; + private String _gender; - public Sex() { + public Gender() { super(); } - public Sex(String initializer) { + public Gender(String initializer) { super(initializer); } - public void setSex (String sex) { + public void setGender(String gender) { - _Sex = sex; + this._gender = gender; } - public String getSex () { + public String getGender() { - return _Sex; + return _gender; } public String formatObject(IFormComponent arg0, Locale arg1, Object arg2) { - if (arg2 == null) return "M"; + if (arg2 == null) + return "M"; + return (Boolean) arg2 ? "M" : "F"; } public Object parseText(IFormComponent field, ValidationMessages messages, String text) throws ValidatorException { + String [] args = new String[1]; args[0] = text; + if (!text.equalsIgnoreCase("M") && !text.equalsIgnoreCase("F")) { - throw new ValidatorException(messages.formatValidationMessage(null, "invalid-format", args)); + throw new ValidatorException(messages.formatValidationMessage(getMessage(), "invalid-format", args)); } + return text.equalsIgnoreCase("M"); } @@ -69, +71 @@ {{{ <contribution configuration-id="tapestry.form.translator.Translators"> - <bean name="sex" class="uk.org.chandlerfamily.tapestry.translators.Sex" /> + <bean name="gender" class="uk.org.chandlerfamily.tapestry.translators.Gender" /> </contribution> }}} @@ -81, +83 @@ <td><span jwcid="@FieldLabel" field="component:gender" >Gender:</span></td> <td><input jwcid="[EMAIL PROTECTED]" - value="ognl:sex" + value="ognl:gender" size="1" - translator="translator:sex" + translator="translator:gender" displayName="Gender" /></td> }}} @@ -92, +94 @@ {{{ public abstract class Create extends BasePage { - private boolean _sex=true; //gives a default value + private boolean _gender = true; //gives a default value - public boolean getSex() { + public boolean getGender() { - return _sex; + return _gender; } - public void setSex(boolean sex) { + public void setGender(boolean gender) { - _sex=sex; + this._gender = gender; } ... }}} @@ -108, +110 @@ The translator factory relies on Hivemind's Bean``Factory which enables passing a single String to a bean constructor. Implement a constructor which takes a single String as a parameter, and use the syntax {{{ - <binding name="translator" value="translator:myTranslator,param"/> + <binding name="translator" value="translator:gender,parameter"/> }}} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
