Re: Tapestry Hibernate Sessions

2011-06-10 Thread Tony Nelson

On Jun 10, 2011, at 10:47 AM, Tony Nelson wrote:

 Hi all,
 
 I'm in the process of rebuilding an app that was done in Tap3 (indeed!) in 
 Tap5.  It's a small app, maybe a dozen pages used by my internal staff.  This 
 is in preparation for rebuilding the entire front of a much larger app.  But 
 that's a story for another day.
 
 Because I want to learn all the new Tap5 goodness, I started with an new 
 project built w/ the maven archetype.  I copied over my DB classes and added 
 the Spring dependencies I needed, and wrote a test case to make sure I could 
 read and write from my dev (h2) database.
 
 Then I created a very small page that displays a few rows from the DB in a 
 table.  The service method is trivial:
 
@Log
public ListOffice getOffices() {
return officeDao.getAllOffices(); 
}
 
 I fired up Jetty, and opened the page.  I really expected to get an exception 
 saying that I don't have a database session because I purposely did not 
 include the OpenSessionInView filter that I'm familiar with.  In addition I 
 didn't include the tapestry-hibernate jars because I'm not sure if it's 
 better to have Tap of Spring handle opening and closing the sessions.
 
 I was very surprised when the page actually rendered a result from the 
 database.  I'm still not clear where the session is coming from, but that is 
 actually my problem.  I can reload my tiny test page 8 times.  On the 9th 
 time, I see:
 
 [582385532@qtp-918884489-5] DEBUG com.starpoint.helpdesk.pages.Offices  - 
 [ENTER] getOffices()
 
 And the browser spins.  I can open the H2 DB in the H2 admin console and 
 issue queries against it, so the H2 instance is fine.
 
 Obviously I'm either out of sessions or connection pool slots.  My goal is to 
 be able to use the Spring @Transactional annotation because in the larger app 
 rewrite I have several dozen business layer Spring managed beans that depend 
 on it.
 
 I have tried adding Springs OpenSessionInViewFilter, and I've tried adding a 
 dependency on tapestry-hibernate-core.  Neither of these solutions have 
 helped.
 
 Can anyone offer any suggestions as to where the session is actually coming 
 from so that I can try to figure out how to get the session closed or 
 released?
 
 I have Spring configured like this:
 
 ?xml version=1.0 encoding=UTF-8?
 beans xmlns=http://www.springframework.org/schema/beans;
   xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
   xmlns:context=http://www.springframework.org/schema/context;
   xsi:schemaLocation=http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd;
default-autowire=byName 
 
bean id=dataSource class=org.apache.commons.dbcp.BasicDataSource
property name=driverClassName value=${dataSource.driverClass} /
property name=username value=${dataSource.user} /
property name=password value=${dataSource.password} /
property name=url value=${dataSource.jdbcURL} /
/bean
 
!-- Hibernate session factory --
bean id=sessionFactory
  
 class=org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
property name=dataSource ref=dataSource/
property name=configLocation value=classpath:/hibernate.cfg.xml/
/bean
 
!-- Hibernate transaction manager --
bean id=transactionManager
  
 class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactory ref=sessionFactory/
/bean
 
 
context:component-scan base-package=com.starpoint.helpdesk.dao /
context:annotation-config/
 
 /beans
 
 and my web.xml is simply:
 
 ?xml version=1.0 encoding=UTF-8?
 !DOCTYPE web-app
PUBLIC -//Sun Microsystems, Inc.//DTD Web Application 2.3//EN
http://java.sun.com/dtd/web-app_2_3.dtd;
 web-app
display-nameStarpoint Help Desk Tapestry 5 Application/display-name
 
context-param
!--
The only significant configuration for Tapestry 5, this informs 
 Tapestry
of where to look for pages, components and mixins.
--
param-nametapestry.app-package/param-name
param-valuecom.starpoint.helpdesk/param-value
/context-param
 
context-param
param-namecontextConfigLocation/param-name
param-valueclasspath:/applicationContext.xml/param-value
/context-param
 
filter
filter-nameapp/filter-name

 filter-classorg.apache.tapestry5.spring.TapestrySpringFilter/filter-class
/filter
 
filter-mapping
filter-nameapp/filter-name
url-pattern/*/url-pattern
/filter-mapping
 
 /web-app
 

I turned on debug logging and get this when the request hangs:

[1828511825@qtp-68769219-3] DEBUG com.starpoint.helpdesk.pages.Offices  - 
[ENTER] getOffices()
[1828511825@qtp-68769219-3

Re: Tapestry Hibernate Sessions

2011-06-10 Thread Tony Nelson

On Jun 10, 2011, at 11:32 AM, Thiago H. de Paula Figueiredo wrote:

 On Fri, 10 Jun 2011 12:12:01 -0300, Tony Nelson tnel...@starpoint.com wrote:
 
 So maybe I should have sent this question to the Spring list?
 
 If you're not using Tapestry-Hibernate this question went to the wrong list. 
 :)
 

Indeed it was a Spring related issue.  Doing some more searching I found that 
Spring requires @Transactional now, and I had only added my data access tier.  
Creating a quick business tier and marking the interface @Transactional solved 
the problem.  For anyone that may find this in [insert favorite search engine] 
later:

My interface for my business class:

package com.starpoint.helpdesk.business;

import com.starpoint.helpdesk.domain.Office;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Transactional(readOnly = true)
public interface OfficeLogic {

ListOffice getAllOffices();
}

The page was of course updated to call this method instead of the DAO directly. 
 The updated applicationContext.xml is:

?xml version=1.0 encoding=UTF-8?
beans xmlns=http://www.springframework.org/schema/beans;
   xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
   xmlns:context=http://www.springframework.org/schema/context;
   xmlns:tx=http://www.springframework.org/schema/tx;
   xsi:schemaLocation=http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd;
default-autowire=byName 

bean id=dataSource class=org.apache.commons.dbcp.BasicDataSource 
destroy-method=close
property name=driverClassName value=${dataSource.driverClass} /
property name=username value=${dataSource.user} /
property name=password value=${dataSource.password} /
property name=url value=${dataSource.jdbcURL} /
/bean

!-- Hibernate session factory --
bean id=sessionFactory
  class=org.springframework.orm.hibernate3.LocalSessionFactoryBean
property name=dataSource ref=dataSource/
property name=configLocation value=classpath:/hibernate.cfg.xml/
/bean

!-- Hibernate transaction manager --
bean id=transactionManager
  
class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactory ref=sessionFactory/
/bean


context:component-scan base-package=com.starpoint.helpdesk.dao /
context:component-scan base-package=com.starpoint.helpdesk.business /

context:annotation-config/

tx:annotation-driven transaction-manager=transactionManager /

/beans







Hopefully an easy one

2007-05-17 Thread Tony Nelson

I have a simple DatePicker

   input jwcid=[EMAIL PROTECTED] 
value=ognl:tradeSearchKeys.receivedTimesheetForWeekEnding

   translator=translator:date,pattern=M/d/
   validators=validators:required
   displayName=As of Date/


All that I want to do is verify that the user entered the date as 
MM/DD/.


What is the correct validator to use in this situation?

Thanks again
Tony Nelson

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: Hopefully an easy one

2007-05-17 Thread Tony Nelson
No, it will accept user input as: 5/17/07 which gets translated in my 
queries to 5/17/0007 and causes hibernate to self destruct.


If a user enters 5/17/07 I expect an error to be raise, but alas, no.

Thanks
Tony

Andreas Andreou wrote:

doesn't translator=translator:date,pattern=MM/dd/ work?

On 5/17/07, Tony Nelson [EMAIL PROTECTED] wrote:


I have a simple DatePicker

input jwcid=[EMAIL PROTECTED]
value=ognl:tradeSearchKeys.receivedTimesheetForWeekEnding
translator=translator:date,pattern=M/d/
validators=validators:required
displayName=As of Date/


All that I want to do is verify that the user entered the date as
MM/DD/.

What is the correct validator to use in this situation?

Thanks again
Tony Nelson


-
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]

Re: [Tap 4.1.2] Problem with repeated calls to an If component

2007-05-17 Thread Tony Nelson
I have noticed similar things happening in my code on the 4.1.2 snapshot 
as well.


Trying to debug the issue I'm having w/ DatePicker (different thread) I 
added a conditional to the page, and used your strategy of counting @If 
calls just to see what I get.


The first time I load the page, on the very first display, my page shows 
that the conditional was called 4 times.  Every time I submit the form, 
and it redisplays, the conditional is called only one time.  I am 
actually very hopeful that the solution to this problem, will also yield 
a solution to other problems I am seeing that are very hard to replicate 
that involve nested components throwing OGNL null pointer exceptions 
when I know for a fact that the data should exist.


For completeness, my template:

span jwcid=@Border title=Test showMenu=ognl:true 
consoleEnabled=ognl:true

   form jwcid=@IHForm clientValidationEnabled=ognl:true
   labelTest: /label
   input jwcid=[EMAIL PROTECTED] value=ognl:theDate
   translator=translator:date,pattern=M/d/
   validators=validators:required
   displayName=As of Date/

   pspan jwcid=@SubmitButton listener=listener:submit //p
   /form

   span jwcid=@If condition=ognl:showTheDate
   You picked span jwcid=@Insert value=ognl:theDate 
format=ognl:format.numericDate /

   /span

   br/
  
   Current Number: span jwcid=@Insert value=ognl:number /

   span id=debug

   /span
/span

And my controller

package com.starpoint.instihire.web.tapestry.page;

import org.apache.log4j.Logger;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.EventListener;
import org.apache.tapestry.annotations.Meta;
import org.apache.tapestry.annotations.InitialValue;
import org.apache.tapestry.event.BrowserEvent;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.form.TextField;

import java.util.Date;

@Meta(permissions=ANY)
public abstract class Test extends ProtectedPage implements 
PageBeginRenderListener

{
   public static final Logger logger = Logger.getLogger(Test.class);

   public abstract Date getTheDate();
   public abstract void setTheDate(final Date theDate);

   @InitialValue(0)
   public abstract int getNumber();
   public abstract void setNumber(int n);

   public void submit()
   {

   }

   public boolean getShowTheDate()
   {
   setNumber(getNumber() + 1);
   return getTheDate() != null;
   }
}

I hope this helpful.

As always, thanks again
Tony

Daniel Jue wrote:

Hi,

I experienced this problem after upgrading from Tap 4.1 to Tap 4.1.2 
Snapshot.

The problem is that I have an IF component that is being called 3
times, when it should only be called once.

I have extracted the problem into a simpler page for examination:

plain.page:


?xml version=1.0?
!DOCTYPE page-specification PUBLIC
 -//Apache Software Foundation//Tapestry Specification 4.0//EN
 http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd;
page-specification class=com.phy6.app.plain
/page-specification



plain.java:


package com.phy6.app;

import javax.servlet.ServletContext;

import org.apache.tapestry.IComponent;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.InitialValue;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.InjectStateFlag;
import org.apache.tapestry.html.BasePage;

public abstract class plain extends BasePage {

/**
 * @return a boolean indicating if the the user is logged in
 */
@InjectStateFlag(user)
public abstract boolean getUserExists();

@InitialValue(0)
public abstract int getNumber();

public abstract void setNumber(int n);

/**
 * @return the servlet context
 */
@InjectObject(service:tapestry.globals.ServletContext)
public abstract ServletContext getServletContext();

@Component(type = If, id = ifUserIsLoggedIn, bindings = {
condition=getUserIsLoggedIn() })
public abstract IComponent getIfUserIsLoggedIn();

/**
 * @return a boolean indicating whether or not a user is logged in.
 */
public boolean getUserIsLoggedIn() {
setNumber(getNumber() + 1);
System.out.println(plain: getUserIsLoggedIn()  + getNumber());
return getUserExists();
}
@Component(type=Insert,id=wtfisgoingon,bindings={value=getNumber()}) 


public abstract IComponent getWTFisgoingon();
}



plain.html:


html
body jwcid=$content$
span jwcid=ifUserIsLoggedInHi/span
span jwcid=wtfisgoingon /
/body
/html


Output to console:

INFO: Server startup in 3966 ms
plain: getUserIsLoggedIn() 1
plain: getUserIsLoggedIn() 2
plain: getUserIsLoggedIn() 3


Output to browser:

html
body

3
/body
/html



Note that I've stripped the code down.  There is no way for the user
to exist in this example, I'm simply reloading the page when the
server starts.  (Tomcat 5.5.23)  This code was part of my Home.page,

Re: I'm missing something obvious

2007-05-14 Thread Tony Nelson

Sorry Jesse, I didn't realize this message didn't have the whole trail.

I have a simple input:

   input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
 validators=validators:required,min=0,max=100
 translator=translator:number,pattern=0
 displayName=Trade ID
 /


the tradeId property is nothing more than:

   public abstract Integer getTradeId();


No matter what value I enter, valid or not, I alway get a dojo popup 
with 3 errors, the input must be a number, it must be greater than 0 and 
less than 10. 

I can get past this issue by disabling client validation, but I really 
don't want to do that.


I believe the dojo warning I'm seeing is from a datePicker that is on 
the form, but I will have to do some more research.


Thanks again for all of your help.

Tony Nelson

Jesse Kuhnert wrote:

What issue exactly is it that you see?

If you could provide the exact text that is presented as the reason 
for the
error as well as what input you gave it to produce the error I can be 
more

helpful.

On 5/14/07, Tony Nelson [EMAIL PROTECTED] wrote:


Grabbing today's latest build, I'm still seeing the same dojo validation
issue.   As a bonus, there is a new debug message:

DEBUG: EXPERIMENTAL: dojo.i18n.number -- Not yet ready for use. APIs
subject to change without notice.

Happy Monday!

Thanks in advance,
Tony Nelson

snipped








-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: I'm missing something obvious

2007-05-14 Thread Tony Nelson
I'm assuming that any value between 1 and 99 should work.  I just 
tried 1234 and it failed as does every other number I type in.


Playing w/ the page at opencomponentry that you linked below, the 
validators seem to work fine which is why I can't figure out what's up.  
I really think I must have a typo, a missing comma or something just 
crazy but I can't find it.


Thanks again for all of your efforts
Tony


Jesse Kuhnert wrote:

Hmm doesn't seem to be conjuring up any eurekas for me currently. .

I wonder what the difference is between your field and the fields on the
Workbench form?

http://opencomponentry.com:8080/workbench/Home,$Border.pageLink.sdirect?sp=SFields 



It has a similar setup but I can't see where the error is happening.

What exact value should pass but is failing for you? Just to be sure.

On 5/14/07, Tony Nelson [EMAIL PROTECTED] wrote:


Sorry Jesse, I didn't realize this message didn't have the whole trail.

I have a simple input:

input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
  validators=validators:required,min=0,max=100
  translator=translator:number,pattern=0
  displayName=Trade ID
  /


the tradeId property is nothing more than:

public abstract Integer getTradeId();


No matter what value I enter, valid or not, I alway get a dojo popup
with 3 errors, the input must be a number, it must be greater than 0 and
less than 10.

I can get past this issue by disabling client validation, but I really
don't want to do that.

I believe the dojo warning I'm seeing is from a datePicker that is on
the form, but I will have to do some more research.

Thanks again for all of your help.

Tony Nelson

Jesse Kuhnert wrote:
 What issue exactly is it that you see?

 If you could provide the exact text that is presented as the reason
 for the
 error as well as what input you gave it to produce the error I can be
 more
 helpful.

 On 5/14/07, Tony Nelson [EMAIL PROTECTED] wrote:

 Grabbing today's latest build, I'm still seeing the same dojo
validation
 issue.   As a bonus, there is a new debug message:

 DEBUG: EXPERIMENTAL: dojo.i18n.number -- Not yet ready for use. APIs
 subject to change without notice.

 Happy Monday!

 Thanks in advance,
 Tony Nelson

 snipped







-
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]

Re: I'm missing something obvious

2007-05-11 Thread Tony Nelson

Does that mean there is a fix floating around somewhere?

Thanks
Tony

[EMAIL PROTECTED] wrote:

This is a regression, the JIRA issue is

https://issues.apache.org/jira/browse/TAPESTRY-1071 

  

-Original Message-
From: Tony Nelson [mailto:[EMAIL PROTECTED] 
Sent: Thursday, May 10, 2007 6:57 PM

To: Tapestry users
Subject: I'm missing something obvious

I have a simple form that includes this:

 input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
  validators=validators:required,min=0,max=100
  translator=translator:number,pattern=0
  displayName=Trade ID
  /


And no matter what legal numeric value I enter, I always get 
a validation error.


Where is my typo?  Because I certainly can't find it.

I'm using yesterdays 4.1.2 snapshot.

  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-annotations/artifactId
  version4.1.2-20070509.030104-65/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency
  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-contrib/artifactId
  version4.1.2-20070509.030104-68/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency
  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-framework/artifactId
  version4.1.2-20070509.030104-76/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency

Thanks in advance for any help.

Tony






-
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]

I'm missing something obvious

2007-05-10 Thread Tony Nelson

I have a simple form that includes this:

input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
 validators=validators:required,min=0,max=100
 translator=translator:number,pattern=0
 displayName=Trade ID
 /


And no matter what legal numeric value I enter, I always get a 
validation error.


Where is my typo?  Because I certainly can't find it.

I'm using yesterdays 4.1.2 snapshot.

 dependency
 groupIdtapestry/groupId
 artifactIdtapestry-annotations/artifactId
 version4.1.2-20070509.030104-65/version
 properties
   war.bundletrue/war.bundle
 /properties
 /dependency
 dependency
 groupIdtapestry/groupId
 artifactIdtapestry-contrib/artifactId
 version4.1.2-20070509.030104-68/version
 properties
   war.bundletrue/war.bundle
 /properties
 /dependency
 dependency
 groupIdtapestry/groupId
 artifactIdtapestry-framework/artifactId
 version4.1.2-20070509.030104-76/version
 properties
   war.bundletrue/war.bundle
 /properties
 /dependency

Thanks in advance for any help.

Tony


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: I'm missing something obvious

2007-05-10 Thread Tony Nelson

Sorry, I should have supplied that in my original e-mail.

   public abstract Integer getTradeId();


Thanks again
Tony

Andreas Andreou wrote:

What's the type of tradeId ?

On 5/10/07, Tony Nelson [EMAIL PROTECTED] wrote:


I have a simple form that includes this:

input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
  validators=validators:required,min=0,max=100
  translator=translator:number,pattern=0
  displayName=Trade ID
  /


And no matter what legal numeric value I enter, I always get a
validation error.

Where is my typo?  Because I certainly can't find it.

I'm using yesterdays 4.1.2 snapshot.

  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-annotations/artifactId
  version4.1.2-20070509.030104-65/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency
  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-contrib/artifactId
  version4.1.2-20070509.030104-68/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency
  dependency
  groupIdtapestry/groupId
  artifactIdtapestry-framework/artifactId
  version4.1.2-20070509.030104-76/version
  properties
war.bundletrue/war.bundle
  /properties
  /dependency

Thanks in advance for any help.

Tony



-
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]

Re: I'm missing something obvious

2007-05-10 Thread Tony Nelson

Client side.. the nifty new dojo popup.

If I disable client side validation it works fine, and I will do that 
for now.. but I'd really rather not.


Thanks again
Tony

Andreas Andreou wrote:

well... the code is correct... i even tried it myself!

So, what kind of validation error you get?
Client side? or server side? What happens if you disable javascript?


On 5/11/07, Tony Nelson [EMAIL PROTECTED] wrote:


Sorry, I should have supplied that in my original e-mail.

public abstract Integer getTradeId();


Thanks again
Tony

Andreas Andreou wrote:
 What's the type of tradeId ?

 On 5/10/07, Tony Nelson [EMAIL PROTECTED] wrote:

 I have a simple form that includes this:

 input jwcid=[EMAIL PROTECTED] value=ognl:tradeId
   validators=validators:required,min=0,max=100
   translator=translator:number,pattern=0
   displayName=Trade ID
   /


 And no matter what legal numeric value I enter, I always get a
 validation error.

 Where is my typo?  Because I certainly can't find it.

 I'm using yesterdays 4.1.2 snapshot.

   dependency
   groupIdtapestry/groupId
   artifactIdtapestry-annotations/artifactId
   version4.1.2-20070509.030104-65/version
   properties
 war.bundletrue/war.bundle
   /properties
   /dependency
   dependency
   groupIdtapestry/groupId
   artifactIdtapestry-contrib/artifactId
   version4.1.2-20070509.030104-68/version
   properties
 war.bundletrue/war.bundle
   /properties
   /dependency
   dependency
   groupIdtapestry/groupId
   artifactIdtapestry-framework/artifactId
   version4.1.2-20070509.030104-76/version
   properties
 war.bundletrue/war.bundle
   /properties
   /dependency

 Thanks in advance for any help.

 Tony



 -
 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]








-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Tap 4.1.2 EventListener

2007-05-03 Thread Tony Nelson
Is it possible to use an EventListener in a component that is displayed 
multiple times on a page?


Specifically, I would like a component that has 2 inputs, and when the 
1st one is updated an onchange event causes the 2nd component to update 
it's value.  From my testing, it appears that only the first component 
responds to a change event (meaning causes my java method to be called), 
and when it's called, I don't seem to have access to the updated values.


My component in progress looks like:

input jwcid=[EMAIL PROTECTED] value=ognl:jobExportValues.id /
input jwcid=[EMAIL PROTECTED] 
value=ognl:jobExportValues.externalJobBoard /

input jwcid=jobIdField value=ognl:jobExportValues.jobId size=5 /

And I register the EventListener in the component as follows:

   @EventListener(events={onchange}, targets=jobIdField)
   public void testEvent()
   {
   logger.debug(LOOKHERE...  + getJobExportValues().getJobId() + 
  + getJobExportValues().getId());

   }


When the listener is actually called, I always get NULL for both 
values.  And again, the listener only fires for the first component on 
the page.


Looking at the page source, it appears that dojo code for all of my 
inputs is being generated which I won't include here due to it's length.


Any help would be greatly appreciated.  Am I just missing the whole 
concept on the new dojo stuff?


Tony

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: Tap 4.1.2 EventListener

2007-05-03 Thread Tony Nelson
A little additional info.. when I change the value on any of the inputs 
beyond the first one, it is causing the form to be submitted, it just 
doesn't call my EventListener method.  Also, I am using the latest 
(today's) Tapestry build.


Thanks again
Tony

Tony Nelson wrote:
Is it possible to use an EventListener in a component that is 
displayed multiple times on a page?


Specifically, I would like a component that has 2 inputs, and when the 
1st one is updated an onchange event causes the 2nd component to 
update it's value.  From my testing, it appears that only the first 
component responds to a change event (meaning causes my java method to 
be called), and when it's called, I don't seem to have access to the 
updated values.


My component in progress looks like:

input jwcid=[EMAIL PROTECTED] value=ognl:jobExportValues.id /
input jwcid=[EMAIL PROTECTED] 
value=ognl:jobExportValues.externalJobBoard /

input jwcid=jobIdField value=ognl:jobExportValues.jobId size=5 /

And I register the EventListener in the component as follows:

   @EventListener(events={onchange}, targets=jobIdField)
   public void testEvent()
   {
   logger.debug(LOOKHERE...  + getJobExportValues().getJobId() + 
  + getJobExportValues().getId());

   }


When the listener is actually called, I always get NULL for both 
values.  And again, the listener only fires for the first component on 
the page.


Looking at the page source, it appears that dojo code for all of my 
inputs is being generated which I won't include here due to it's length.


Any help would be greatly appreciated.  Am I just missing the whole 
concept on the new dojo stuff?


Tony



-
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]

Re: Tap 4.1.2 EventListener

2007-05-03 Thread Tony Nelson
I grabbed the latest snapshot and now the callback is getting called for 
all of my inputs.  Thank you very much. 

I still get NULL as the value, but I think that's my fault.  I'm going 
to have to do some serious thinking about how this page works.


For my understanding, when the onchange event fires, what data should 
I expect to be posted back to the server?  The entire form?  Or just the 
changed field?  Reading all the logging that I have in my page, it 
appears as though the entire page is being reconstructed (like a 
rewind?) on the back end.  Is that normal?  Should I expect that?


I'm going to have to add even more logging, but should I expect 
pageBeginRender() to be called?  I would expect not.. but I might be wrong.


I can see that Tapestry is definitely evaluating the entire template 
because of all the logging I get just updating one field in the browser, 
and I guess that might be necessary, I just need to figure out what the 
consequences of that will be on my code.


Thanks for all your help
Tony

Jesse Kuhnert wrote:

Yes the feeling was correct. The snapshot version should be fixed and
deployed already.

Sorry for the inconvenience,  you caught me in the middle of some larger
changes and I guess this use case was a victim.

On 5/3/07, Jesse Kuhnert [EMAIL PROTECTED] wrote:


Hmm...I have a bad feeling this is my fault - obviously it should work
fine as-is. I'll take a look...

On 5/3/07, Tony Nelson  [EMAIL PROTECTED] wrote:

 A little additional info.. when I change the value on any of the 
inputs

 beyond the first one, it is causing the form to be submitted, it just
 doesn't call my EventListener method.  Also, I am using the latest
 (today's) Tapestry build.

 Thanks again
 Tony

 Tony Nelson wrote:
  Is it possible to use an EventListener in a component that is
  displayed multiple times on a page?
 
  Specifically, I would like a component that has 2 inputs, and 
when the

  1st one is updated an onchange event causes the 2nd component to
  update it's value.  From my testing, it appears that only the first
  component responds to a change event (meaning causes my java 
method to

  be called), and when it's called, I don't seem to have access to the
  updated values.
 
  My component in progress looks like:
 
  input jwcid=[EMAIL PROTECTED] value=ognl:jobExportValues.id /
  input jwcid=[EMAIL PROTECTED] 
  value=ognl:jobExportValues.externalJobBoard /
  input jwcid=jobIdField value=ognl:jobExportValues.jobId 
size=5

 /
 
  And I register the EventListener in the component as follows:
 
 @EventListener(events={onchange}, targets=jobIdField)
 public void testEvent()
 {
 logger.debug(LOOKHERE...  + 
getJobExportValues().getJobId() +


+ getJobExportValues().getId());
 }
 
 
  When the listener is actually called, I always get NULL for both
  values.  And again, the listener only fires for the first 
component on


  the page.
 
  Looking at the page source, it appears that dojo code for all of my
  inputs is being generated which I won't include here due to it's
 length.
 
  Any help would be greatly appreciated.  Am I just missing the whole
  concept on the new dojo stuff?
 
  Tony
 
 
 


 
  
-

  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]




--
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com








-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: [vote] remove renderTags default of true for @If/@Else? (tapestry 4.1.2 )

2007-05-02 Thread Tony Nelson
I personally don't care which way you default, but I do think that all 
tags should have the same default.  It's much easier to remember to turn 
it on/off if I don't have to try and remember which tags have which default.


I added:

   meta key=org.apache.tapestry.renderTags value=true /

to my Tapestry.application and was able to get the behavior I was after.

In short, consistency wins in my book every time.

Tony Nelson

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Tap 4.1.2 translators/validators

2007-05-01 Thread Tony Nelson
If a TextField has both a translator and validators defined, is the 
input passed from the validators the output of the translators?


I have been trying to get something like this working in 4.1.2 (todays 
snapshot) that worked fine in 4.0.


   input jwcid=@TextField value=ognl:percent
validators=validators:required,min=1,max=100
translator=translator:percentTranslator
displayname=Percent Input/

My percentTranslator is registering the dojo events necessary to call:

   translatePercentage:function(value) {
   dojo.log.warn(enter translatePercentage);
   if(!value){return 0;}
   var result = parseFloat(value.replace(/%/,''));
   dojo.log.warn(result= + result);
   return result;
   }

which simply strips any '%' signs out of the input value and returns a 
Float (which is probably unnecessary).


When I submit my test form, I do see the log messages in Firebug as 
expected, and it definitely is returning the value without a % however I 
get a dojo validation popup that states the value is non-number, and 
does not meet the min/max criteria.


Is there any way to find out what value is being passed to min/max?

Thanks in advance for any help.

Tony Nelson


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Tap 4.1.1 TextField Ajax question

2007-04-30 Thread Tony Nelson
I am attempting to use @EventListener to submit the value of a TextField 
onChange.  So, I have an input defined:


   input jwcid=myField value=ognl:text
  displayName=Text /

In the page class I have:

   @Component(bindings = {validators=validators:required})
   public abstract TextField getMyField();

   @EventListener(events={onchange}, elements=myField)
   public void testEvent(IRequestCycle cycle)
   {
   logger.debug(LOOKHERE...  + getText());
   }

But I'll be darned if any of the events are firing.

To rule out other problems, I copied the big brother is watching 
sample from:


http://tapestry.apache.org/tapestry4.1/ajax/eventlistener.html

to the same page, and it works just fine..

30 Apr 2007 11:35:36,658 [http-8080-Processor24] DEBUG 
com.starpoint.instihire.web.tapestry.page.Test  - User clicked on x/y 
coordinates 159/326


Am I barking up the wrong tree?  My final goal is to have a dropdown 
update it's contents based on the text in the TextField, but until I can 
dynamically get it's value I'm stuck.


Thanks in advance for all the help.
Tony Nelson



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: Tap 4.1.1 TextField Ajax question

2007-04-30 Thread Tony Nelson
I would be very happy to use Tapestry 4.1.2 but I run into a problem 
every time I try the latest snapshot:


java.lang.NoClassDefFoundError: ognl/enhance/ExpressionAccessor

I assume this related to the OGNL stability you mention.  


Is there a newer beta of OGNL I grab from somewhere to get moving along?  If so 
I'll just throw it in my local repository for now.

Thanks again
Tony



Jesse Kuhnert wrote:

You want to use targets= . Elements =  is strictly for pure html
elements and not tapestry components.

If you use the 4.1.2-SNAPSHOT version it will also automatically 
figure out
which form your targeted components are attached to and submit that as 
part

of the event so that you can do things like get the current value of the
field.

4.1.2 should be released very soon, just holding out for ognl stability.

On 4/30/07, Tony Nelson [EMAIL PROTECTED] wrote:


I am attempting to use @EventListener to submit the value of a TextField
onChange.  So, I have an input defined:

input jwcid=myField value=ognl:text
   displayName=Text /

In the page class I have:

@Component(bindings = {validators=validators:required})
public abstract TextField getMyField();

@EventListener(events={onchange}, elements=myField)
public void testEvent(IRequestCycle cycle)
{
logger.debug(LOOKHERE...  + getText());
}

But I'll be darned if any of the events are firing.

To rule out other problems, I copied the big brother is watching
sample from:

http://tapestry.apache.org/tapestry4.1/ajax/eventlistener.html

to the same page, and it works just fine..

30 Apr 2007 11:35:36,658 [http-8080-Processor24] DEBUG
com.starpoint.instihire.web.tapestry.page.Test  - User clicked on x/y
coordinates 159/326

Am I barking up the wrong tree?  My final goal is to have a dropdown
update it's contents based on the text in the TextField, but until I can
dynamically get it's value I'm stuck.

Thanks in advance for all the help.
Tony Nelson




-
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]

4.1.2 Translator/Validation

2007-04-30 Thread Tony Nelson
It would seem to me that translators would be called before validators, 
but I'm not sure how that applies with the new dojo validation.  Can 
someone suggest a place to find a sample?


I have a requirement for my project that all inputs that are percentages 
before formatted with a percent sign at the end of the value in the 
input box which is easily accomplished with a translator.


However if I apply a min or max validator, on submit I get errors 
because the form doesn't seem to call my translator to get the original 
value.


Have I been staring at this too long?  Does what I wrote even make sense?

Thanks in advance (again)
Tony Nelson

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Suggested version

2007-04-25 Thread Tony Nelson
Over the last year, we have slowly been converting an internal 
application from a home brewed infrastructure to Tapestry 4.0.  Some of 
the new functionality we need to add would best be handled with Ajax and 
I so I started looking at the newer versions of Tapestry.  I can't seem 
to figure out which version of Tapestry I should upgrade to.


The official distribution page lists Tapestry 4.0.2 as the latest 
stable build.  This version doesn't support Ajax to the best of my 
knowledge.


Folks using Maven2 seem to be encouraged to use the 4.1.2-SNAPSHOT.  Is 
it stable enough to be used in a production environment?  Is it really a 
good idea?


Is there an official distribution of 4.1.0 or 4.1.1 I should consider?

Reading the e-mail list, I see a lot of people using Tapestry 5.0.3.  Is 
there enough functionality ready for me to consider it?  I assume this 
will be the longest migration path for us, but since I need to upgrade, 
if now is the time, so be it.


Thank you in advance for any help.

Tony Nelson
Starpoint Solutions

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

<    1   2