RE: Form processing question
You do know there's a typo in your example, don't you? You're trying to pair a logic:notPresent with a /logic:present (note the missing not). Maybe it's only in your email, but it has bitten me IRL. Marcel -Oorspronkelijk bericht- Van: Greg Maletic [mailto:[EMAIL PROTECTED]] Verzonden: maandag 6 augustus 2001 1:29 Aan: Martin Cooper; [EMAIL PROTECTED] Onderwerp: RE: Form processing question That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? Thanks. -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
RE: Form processing question
Thanks; it's a typo in my e-mail. The solution that Craig posted earlier--store the form name in a variable and evaluate it with %= % tags--works great. -Original Message- From: Marcel Maré [mailto:[EMAIL PROTECTED]] Sent: Monday, August 06, 2001 12:10 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: RE: Form processing question You do know there's a typo in your example, don't you? You're trying to pair a logic:notPresent with a /logic:present (note the missing not). Maybe it's only in your email, but it has bitten me IRL. Marcel -Oorspronkelijk bericht- Van: Greg Maletic [mailto:[EMAIL PROTECTED]] Verzonden: maandag 6 augustus 2001 1:29 Aan: Martin Cooper; [EMAIL PROTECTED] Onderwerp: RE: Form processing question That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? Thanks. -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
RE: Form processing question
That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? Thanks. -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
RE: Form processing question
Actually, let me correct that last post...the %s at the end of each logic:present tag are NOT in my JSP. That was a typo on my part when I was putting it into the e-mail. Sorry. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] rg]On Behalf Of Greg Maletic Sent: Sunday, August 05, 2001 4:29 PM To: Martin Cooper; [EMAIL PROTECTED] Subject: RE: Form processing question That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? Thanks. -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
RE: Form processing question
On Sun, 5 Aug 2001, Greg Maletic wrote: That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? How about a runtime expression? It's illustrated below with a scriptlet for brevity, but you could also precompute the destination in an Action, or as a property of your form bean: % String destination = editProductConfirmed.do; if (request.getParameter(productId == null) destination = addProductConfirmed.do; % html:form action=%= destination % In the Struts example app, you will find that I addressed this issue differently -- the same Action is used for the add, edit, and delete cases, and a hidden variable is included on the form to indicate which transaction should be performed. That way, you don't have to mess around when designing the page. Thanks. Craig -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
RE: Form processing question
Thanks, Craig. For some reason I had the impression that you couldn't use %= % tags inside of the Struts taglibs. I'll try it out. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] rg]On Behalf Of Craig R. McClanahan Sent: Sunday, August 05, 2001 4:41 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Cc: Martin Cooper Subject: RE: Form processing question On Sun, 5 Aug 2001, Greg Maletic wrote: That was my idea, too, but it doesn't seem to work. I'm doing the following: logic:present parameter=productId % html:form action=editProductConfirmed.do /logic:present logic:notPresent parameter=productId % html:form action=addProductConfirmed.do /logic:present But the parser goes nuts with this. XML doesn't allow improperly nested tags, so it complains that there's no matching /html:form tag inside of the logic:present tag. Does anyone have any other ideas? How about a runtime expression? It's illustrated below with a scriptlet for brevity, but you could also precompute the destination in an Action, or as a property of your form bean: % String destination = editProductConfirmed.do; if (request.getParameter(productId == null) destination = addProductConfirmed.do; % html:form action=%= destination % In the Struts example app, you will find that I addressed this issue differently -- the same Action is used for the add, edit, and delete cases, and a hidden variable is included on the form to indicate which transaction should be performed. That way, you don't have to mess around when designing the page. Thanks. Craig -Original Message- From: Martin Cooper [mailto:[EMAIL PROTECTED]] Sent: Saturday, August 04, 2001 11:27 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: Form processing question One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
Re: Form processing question
One way to do this would be to use the Struts conditional tags to generate a different URL on the page for edit versus add. You could base the decision on the presence or absence of your productId parameter. -- Martin Cooper - Original Message - From: Greg Maletic [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 5:09 PM Subject: Form processing question I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg
Re: Form processing question
Hello Greg, Struts encourages you to use slight different yet powerful approach. If you have a jsp page with a form it's nice to have two actions to serve this form. One action is used to prepare data for form (direct db access, ejb, xml, text file, whatever you want) and another to collect info user entered and process it (put into db and so on). Let's call these actions EditAction and SaveAction. So you're saying user can see you page either during creating a widget or updating it. Excellent, there is no need for any other action, just use parameter(s) which will tell you the nature of the action, in Struts example this parameter even called this way - action. So, you want to create something, you have a link like '/EditSomething.do?action=Create', you want update - '/EditSomething.do?action=Update', delete - '/EditSomething.do?action=Delete', other process - '/EditSomething.do?action=other process'. In your jsp form you write a statement like this html:hidden property=action/ and in your SaveAction you read this parameter and act accordingly. Eventually we end up having only one Edit and one Save actions to do what ever we please with some item. Best of luck, Yuriy Zubarev --- Greg Maletic [EMAIL PROTECTED] wrote: I have a JSP that is used to edit data on a ActionForm bean. There are two ways for users to reach this JSP: 1) if they're adding a new object into my app; 2) if they're editing an existing object in my app. I'm using two mappings in my struts-config.xml file to represent these two types of actions (/add and /edit), although they both map to this same JSP. (Additionally, the /edit mapping has a parameter called productId that describes which product to edit, while the /add mapping doesn't have a parameter.) It's the behavior when the JSP's form is submitted that I'm having trouble with. If the JSP was reached through the add mapping, I want it to go to an /addExecute mapping that will actually add the object. And if the JSP was reached through the edit mapping, I want the form to go to an /editExecute mapping that will actually make the modifications to the object. (As above, the /editExecute mapping needs a productId parameter specified--passed through from the original /edit mapping--while the /addExecute mapping doesn't.) Unfortunately, I can't figure out how to conditionally make the form submit to one of two different actions (/addExecute or /editExecute). Is there a way to make this work? Is this the right technique for solving this problem? If not, could someone please let me know how this is typically done? Thanks! Greg __ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/