You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Jorge Quiroga <jq...@pctltda.com> on 2006/01/05 21:33:03 UTC

Unable to update error on T4 RC-3

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 
$MainForm_47@75541c[MainForm] to com.pct.MConsultas.TCampo@62e8c8: 
$MainForm_47.campo
//The next line is where Tapestry encounter the problem
<span jwcid="loop@For" 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 
$MainForm_47@75541c[MainForm] to com.pct.MConsultas.TCampo@62e8c8: 
$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: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: Unable to update error on T4 RC-3

Posted by Jorge Quiroga <jq...@pctltda.com>.
Thanks Ryan, it was the problem just a <property name="campo"/> thanks a 
lot.


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: Unable to update error on T4 RC-3

Posted by Bryan Lewis <br...@maine.rr.com>.
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
> $MainForm_47@75541c[MainForm] to com.pct.MConsultas.TCampo@62e8c8:
> $MainForm_47.campo
> //The next line is where Tapestry encounter the problem
> <span jwcid="loop@For" 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
> $MainForm_47@75541c[MainForm] to com.pct.MConsultas.TCampo@62e8c8:
> $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: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org