[ http://issues.apache.org/jira/browse/TAPESTRY-617?page=all ]
Brian K. Wallace resolved TAPESTRY-617:
---------------------------------------
Fix Version: 3.0.5
Resolution: Fixed
Assign To: Brian K. Wallace
Added context class loader parameter to Ognl.getValue call
> get static field fail with use table component, bug report like bug
> tapestry-408
> --------------------------------------------------------------------------------
>
> Key: TAPESTRY-617
> URL: http://issues.apache.org/jira/browse/TAPESTRY-617
> Project: Tapestry
> Type: Bug
> Components: Contrib
> Versions: 3.0.3
> Environment: weblogic+windows2000+jdk1.4.2
> Reporter: samwen
> Assignee: Brian K. Wallace
> Fix For: 3.0.5
>
> bug report like bug tapestry-408
> in my table component define
> columns="id.bigClientId:title1:[0].id.bigClientId,
> contractDate:mydate:@[EMAIL PROTECTED]([0].contractDate)"
> it can't access static field !!
> weblogic 8.1.3+windows 2000+eclipse
> /* when weblogic classpath include ognl.jar
> * mywebapp
> * +web-inf
> * |
> * +lib ognl.jar;tapestry-3.x.x.jar; tapestry-contrib-3.x.x.jar;
> *
> */
>
> //org.apache.tapestry.contrib.table.model.ognl.OgnlTableColumnEvaluator.java
>
> public Object getColumnValue(ITableColumn objColumn, Object objRow)
> {
> // If no expression is given, then this is dummy column. Return
> something.
> if (m_strExpression == null || m_strExpression.equals(""))
> return "";
> if (m_objParsedExpression == null)
> {
> synchronized (this)
> {
> if (m_objParsedExpression == null)
> m_objParsedExpression =
>
> OgnlUtils.getParsedExpression(m_strExpression);
> }
> }
> try
> {
> Object objValue = Ognl.getValue(m_objParsedExpression,
> objRow);
> return objValue;
> }
> catch (OgnlException e)
> {
> LOG.error(
> "Cannot use column expression '" +
> m_strExpression + "' in row",
> e);
> return "";
> }
> }
> patch:
> //
> org.apache.tapestry.contrib.table.model.ognl.OgnlTableColumnEvaluator.java
> /**
> * @see
> org.apache.tapestry.contrib.table.model.simple.ITableColumnEvaluator#getColumnValue(ITableColumn,
> Object)
> */
> public Object getColumnValue(ITableColumn objColumn, Object objRow)
> {
> // If no expression is given, then this is dummy column. Return
> something.
> if (m_strExpression == null || m_strExpression.equals(""))
> return "";
> if (m_objParsedExpression == null)
> {
> synchronized (this)
> {
> if (m_objParsedExpression == null)
> m_objParsedExpression =
>
> OgnlUtils.getParsedExpression(m_strExpression);
> }
> }
> try
> {
>
> ClassResolver resolver= new ClassResolver(){
> public Class classForName(String className, Map
> context) throws ClassNotFoundException {
> ClassLoader contextClassLoader =
> Thread.currentThread().getContextClassLoader();
> return Class.forName(className, true,
> contextClassLoader);
> }
> };
> Map context = Ognl.createDefaultContext(objRow,
> resolver);
> Object objValue= Ognl.getValue(m_objParsedExpression,
> context, objRow);
>
> //Object objValue =
> Ognl.getValue(m_objParsedExpression, objRow);
> return objValue;
> }
> catch (OgnlException e)
> {
> System.out.println("ognl exception!!");
> e.printStackTrace();
> LOG.error(
> "Cannot use column expression '" +
> m_strExpression + "' in row",
> e);
> return "";
> }catch(RuntimeException ex){
> System.out.println("throw Exception
> OgnlTableColumnEvaluator!!");
> ex.printStackTrace();
> throw ex;
> }catch(Exception ex){
> ex.printStackTrace();
> throw new RuntimeException(ex);
> }
>
> }
> weblogic 8.1.3+windows 2000+eclipse
> /* when weblogic classpath include
> ognl.jar;tapestry-3.x.x.jar;tapestry-contrib-patch.jar
> * mywebapp
> * +web-inf
> * |
> * +lib ognl.jar;tapestry-3.x.x.jar; tapestry-contrib-3.x.x.jar;
> *
> */
> and run Ok!
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]