Rob,

Its probably that time where you zip up the relevant code and ship it off to
me.  [EMAIL PROTECTED]

It will be easier if I just take a look, if you'd like me to.

-Dusty

Rob Hills wrote:
> 
> Hi Dusty,
> 
> dusty wrote:
>> #1  Can you show me your cancel button?  In Appfuse, the Cancel button is
>> actually a submit button that sends the form to your save method.  If
>> your
>> Action extends BaseAction it should catch the cancel and abort the
>> operation
>> and return CANCEL.  If for some reason you did not extend BaseAction or
>> your
>> button's name is not method:cancel then it will just go through to your
>> save
>> method.   If that is not the case then its possible that your collection
>> is
>> getting persisted based on something in your add method....
>>   
> The cancel button is indeed a submit.  My action extends BaseAction and 
> I have a save() method in it that checks for cancel first up and returns 
> CANCEL.  I actually think the problem with the collection has occurred 
> long before then, because if I add an item to the collection, I see it 
> in the DB before I click the save button on the parent record.  I have a 
> feeling that this problem is probably a symptom of problem 2.
>> #2 This is usually due to the Spring configuration for transactions and
>> your
>> manager method names.  It depends on what version of Appfuse.  The latest
>> version of Appfuse lets all methods be read-write, but in the past
>> methods
>> that started with get were marked as read-only and if I remember its
>> possible that only methods that start with save* can have a read-write
>> transaction.  But in my experience this is where this error comes from. 
>> Let
>> me know what version of Appfuse and put up your Spring configuration so I
>> can take a look.  Also let me know what the Manager method name you are
>> calling.
>>   
> I'm using AppFuse 2.0 and I've not had any problems with any of my other 
> forms FWIW, though none are as complicated as this one.  The Action I'm 
> using to add my child record is named "addChild".  My Spring 
> configuration is much the same as for all my other objects (except that 
> it has an extra "addChild" action defined) and the only changes I've 
> made to it are to include my own classes (DAOs, Managers, Actions etc) 
> where I'm using those instead of Generics.
>> #3 Remove
>> The delete link includes the id of the child.   So on the web page you
>> have
>> a link like this:
>> <a href=javascript:remove(index)>
>>
>> Then you need a javascript function like the others that changes the
>> action
>> of the form to point to your Webwork delete action method.  
>> function remove(index){
>>     var form = $('myformid'} //using the prototype library $() funciton
>>     form.action = 'removeurl.html?index=' + index
>>     form.submit();
>> }
>>
>> Finally in your Action you need an int setIndex and index variable to
>> accept
>> the url parameter.  In your remove method you use this int to find the
>> child
>> in the current parent collection.  Then you check if this child has been
>> previously saved, so you can delete it from the database before you
>> remove
>> it from the colleciton.
>>
>> public String remove(){
>>     Child child = parent.getChildren().get(index);
>>     if(child != null) {         //guard against some bad index number
>> being
>> passed  
>>         if(child.getId() != null){
>>               childManager.remove(child.getId()) //or something like that
>>          }
>>          parent.getChildren().remove(index);
>>     return SUCCESS;
>> }
>>   
> Thanks for those details.  I actually got my delete working - because I 
> was using a get (ie a URL with parameter) rather than a Post, I wasn't 
> getting my Parent ID back to display the updated parent record.  I 
> simply used code like that which you've shown above to retrieve the 
> child record and then used its parent record (before I removed it) to 
> pull the Parent back.  Interestingly, this seems to be working properly 
> in that after I delete a child record, the form shows the updated state 
> (ie with the child deleted) but the child hasn't yet been removed from 
> the DB.  If I can work out what's causing the transaction error on post, 
> I think I'll have it sorted.
> 
> I suspect my problem is to do with some of the subtleties of mapping 
> relationships between POJOs using Hibernate annotations.  I seem to 
> remember reading about this kind of problem before - something to do 
> with having to specify a one-to-many relationship in a special way to 
> work around an "undocumented feature" in Hibernate, but I can't find it 
> now.  Currently I have a "bi-directional" relationship with a 
> not-nullable constraint on the parentID in the child record and my 
> recollection is that you have to hold your mouth right when you do the 
> annotations for this or it won't work.  I'd actually prefer to have it a 
> one-way relationship but I haven't worked out the right annotations for 
> that yet.
> 
> Cheers,
> Rob Hills
> Waikiki,  Western Australia
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/AppFuse-2-%2B-Hibernate-%2B-Struts---Master-detail-form---update-master-and-detail-data-in-one-transaction-tf4802043s2369.html#a13794976
Sent from the AppFuse - User mailing list archive at Nabble.com.

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

Reply via email to