You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Apache Wiki <wi...@apache.org> on 2006/03/04 01:28:39 UTC
[Jakarta-tapestry Wiki] Update of "CreatingCustomTranslators" by
AndreasBulling
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="gender@TextField"
- 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: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org