It looks like you haven't defined the "campo" property. You told the
For loop to use that property to hold the object within each iteration,
but it doesn't exist. Hence the NoSuchPropertyException. You could
define campo as an instance variable with accessor methods, or better,
as a property defined in the page spec.
Jorge Quiroga wrote:
> Hello
>
> I'm newbie with Tapestry, and I cannot solve this error (I'm almost
> sure that I'm overlooking something but I don`t know what), and I
> searched on gmane and docs (that are out of sync) but the solution
> doesn´t appear for me.
>
> I tried to put a <property> inside .page but the error is on the page,
> and after all T4 detects the type of the element (TCampo) in the List.
> Additionally in the .dtd for T4 the "type" part of the property
> dissapear, and I don´t know how specify the setter (¿what setter and
> where?) for TCampo inside the page.
>
> Environment:
> T4-RC3
> JDK 1.5.0_06b
> Tomcat 5.5.12
>
> The well known error is:
>
> org.apache.tapestry.BindingException
> Unable to update OGNL expression '<parsed OGNL expression>' of
> [EMAIL PROTECTED] to [EMAIL PROTECTED]:
> $MainForm_47.campo
> //The next line is where Tapestry encounter the problem
> <span jwcid="[EMAIL PROTECTED]" source="ognl:camposUser" value="ognl:campo">
> <td>
> <span jwcid="@Checkbox" id="ognl:campo.nomCampo"
> value="ognl:campo.visible" displayName="ognl:campo.displayName"/>
> </td>
> </span>
>
> org.apache.hivemind.ApplicationRuntimeException
> Unable to update OGNL expression '<parsed OGNL expression>' of
> [EMAIL PROTECTED] to [EMAIL PROTECTED]:
> $MainForm_47.campo
>
> ognl.NoSuchPropertyException
> $MainForm_47.campo
>
> Stack Trace:
>
> *
> ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:133)
> * ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1629)
> * ognl.ASTProperty.setValueBody(ASTProperty.java:105)
> * ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> * ognl.SimpleNode.setValue(SimpleNode.java:246)
> * ognl.Ognl.setValue(Ognl.java:476)
> *
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.writeCompiled(ExpressionEvaluatorImpl.java:121)
>
> *
> $ExpressionEvaluator_1089c2e0f5b.writeCompiled($ExpressionEvaluator_1089c2e0f5b.java)
>
>
>
> the camposUser is a List that is populated previously and is
> successful the process, but fail when Tapestry tries to render.
>
> TCampo.java
>
> public class TCampo implements Serializable
> {
> private static final long serialVersionUID = 1858318434177120215L;
>
> private String nomCampo;
> private String Expr;
> private String displayName;
> private boolean llave=false;
> private boolean visible=false;
> private boolean forUser=false;
> private TTipoDato tipo;
>
> public TCampo(){
> }
>
> public TCampo(String strNomCampo, String strExpresion,
> String strDisplayName, boolean bLlave,
> boolean bVisible, boolean bForUser,
> TTipoDato tipDato){
> nomCampo = strNomCampo;
> if (strExpresion.equals(""))
> Expr = strNomCampo;
> else Expr = strExpresion;
> displayName = strDisplayName;
> llave = bLlave;
> visible = bVisible;
> forUser = bForUser;
> tipo = tipDato;
> }
>
> public String getDisplayName() {
> return displayName;
> }
>
> public void setDisplayName(String displayName) {
> this.displayName = displayName;
> }
>
> public String getNomCampo() {
> return nomCampo;
> }
>
> public void setNomCampo(String nomCampo) {
> this.nomCampo = nomCampo;
> }
>
> public TTipoDato getTipo() {
> return tipo;
> }
>
> public void setTipo(TTipoDato tipo) {
> this.tipo = tipo;
> }
>
> public boolean isVisible() {
> return visible;
> }
>
> public void setVisible(boolean visible) {
> this.visible = visible;
> }
>
> public String getExpr() {
> return Expr;
> }
>
> public void setExpr(String expr) {
> Expr = expr;
> }
>
> public boolean isForUser() {
> return forUser;
> }
>
> public void setForUser(boolean forUser) {
> this.forUser = forUser;
> }
>
> public boolean isLlave() {
> return llave;
> }
>
> public void setLlave(boolean llave) {
> this.llave = llave;
> }
> }
>
> TTipoDato is defined as
>
> static public enum TTipoDato{
> cadena, entero, flotante, listado, bool, fecha;
> }
>
>
> As you can see is a boring POJO and the MainPage.java only have a
> public abstract setter and getter for camposUser, the setter is use to
> assign the List before render, so the information is present before
> rendering.
>
>
> ¿What I'm missing, overlooking or doing wrong?
>
> Thanks in advance for your time
>
>
> Jorge Quiroga
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]