Okay,
I created new component "errorMsg" which can be used anywhere on the
page to display individual error. Enhancements welcome.
This component takes two arguments, a literal string denoting field
for which error should be rendered, and form to which field is bound.
The form must be accessible via getter from the class page.
import org.apache.tapestry.Field;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.ValidationTracker;
import org.apache.tapestry.annotations.BeginRender;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.corelib.components.Form;
public class ErrorMsg {
@Parameter
private String _fieldName;
@Parameter
private Form _form;
public void setFieldName(String aFieldName) {
_fieldName = aFieldName;
}
@BeginRender
void renderMessage(MarkupWriter writer)
{
Field f = new Field() {
public String getElementName() { return _fieldName; }
public String getLabel() { return null; }
public boolean isDisabled() { return false; }
public String getClientId() { return _fieldName; }
};
ValidationTracker tracker = _form.getDefaultTracker();
String err = tracker.getError(f);
writer.write(err);
}
public void setForm(Form aForm) {
_form = aForm;
}
}
To display individual error messages simply place <t:errorMsg ../>
anywhere on the page. It will render the error if there is one for a
field.
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<strong><t:errorMsg fieldName="literal:foo" form="form"/></strong>
<t:form t:id="myform">
User Name:
<input type="text" t:type="textfield" t:id="bar" t:value="bar"
t:validate="required,minlength=3,maxlength=8"/><br/>
Foo:
<input type="text" t:type="textfield" t:id="foo" t:value="foo"
t:validate="required"/>
<p/>
<input type="submit" t:type="submit" t:id="submitButton"
value="Submit"/>
<p/>
<t:errorMsg fieldName="literal:bar" form="form"/><br/>
<!-- you can even display same error twice :) -->
<t:errorMsg fieldName="literal:bar" form="form"/>
</t:form>
</t:layout>
Page Class:
public class Start {
@Persist
private String _foo;
@Persist
private String _bar;
@Component(id="myform")
private Form _form;
public Form getForm() {
return _form;
}
public String getBar() {
return _bar;
}
public String getFoo() {
return _foo;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]