VGJ,
You might have discovered a limitation of the system or a bug. As I
wrote, I would recommend you make a testcase with all distracting
detail removed and submit it as a jira issue, then post a link to the
the issue here.
I understand your frustration, but I think the above would be the best
investment of your own efforts.
Regards,
Bernard.
On Mon, 21 Dec 2009 11:13:49 -0700, you wrote:
>Well, I'm still unable to spot anything strange. No matter what page I
>annotate, it doesn't switch to https until the form is submitted. It then
>goes to https (as if it's redirecting to itself?) and triggers the
>validation on the page, even if the correct fields are filled in. No matter
>what page I annotate on this site, it happens the same way.
>
>Here's an example from this app:
>
>The "login or create a new account page":
>
>@RequireHttps
>public class UserAccount extends BasePage
>{
> public UserAccount()
> {
> //get user from session
> User user = ((UserSession)getSession()).getUser();
>
> //pass go, collect $200
> if (user != null)
> throw new RestartResponseException(new ContactInfo());
>
> add(new FeedbackPanel("feedbackPanel"));
>
> //get cart in session
> ShoppingCartLocal cart = ((UserSession)getSession()).getCart();
>
> //entities
> Order order = cart.getOrder();
> Customer customer = order.getCustomer();
> String email = (order != null && customer != null) ? customer.getEmail()
>: "";
>
> //form model (entity)
> if (user == null) user = new User();
>
> //if email exists, pre-populate form
> if (email != null && !email.equals(""))
> user.setUsername(email);
>
> final Form returnUserForm = new Form("retUserAccountForm", new
>CompoundPropertyModel(user));
> final Form newUserForm = new Form("newUserAccountForm", new
>CompoundPropertyModel(user));
>
> //add form components
> returnUserForm.add(new TextField("username")
> .setRequired(true)
> .add(EmailAddressPatternValidator.getInstance()));
> returnUserForm.add(new PasswordTextField("password"));
>
> returnUserForm.add(new Button("userAcctButton")
> {
> public void onSubmit()
> {
> ShoppingCartLocal cart = null;
>
> try
> {
> //save form values, redirect
> User user = (User)returnUserForm.getModelObject();
>
> //get cart from session
> cart = ((UserSession)getSession()).getCart();
>
> //create order in session
> cart = CartProxy.authUserAccount(cart, user);
>
> //set cart back to session & log user in
> ((UserSession)getSession()).setCart(cart);
> ((UserSession)getSession()).setUser(
> cart.getOrder().getCustomer().getUser());
>
> //redirect
> setResponsePage(new ContactInfo());
> }
> catch (Exception exp)
> {
> info(exp.getMessage());
> LogProxy.saveEntry(exp);
> }
> }
> });
>
> returnUserForm.add(new Link("forgotPasswordLink")
> {
> public void onClick()
> {
> setResponsePage(new ForgotPassword());
> }
> });
>
>
> //add form components
> newUserForm.add(new TextField("username")
> .setRequired(true)
> .add(EmailAddressPatternValidator.getInstance()));
>
> newUserForm.add(new Button("userAcctButton")
> {
> public void onSubmit()
> {
> ShoppingCartLocal cart = null;
>
> try
> {
> //save form values, redirect
> User user = (User)newUserForm.getModelObject();
>
> //get cart from session
> cart = ((UserSession)getSession()).getCart();
>
> //create order in session
> cart = CartProxy.createUserAccount(cart, user);
>
> //set cart back to session & log user in
> ((UserSession)getSession()).setCart(cart);
> ((UserSession)getSession()).setUser(
> cart.getOrder().getCustomer().getUser());
>
> //redirect
> setResponsePage(new ContactInfo());
> }
> catch (Exception exp)
> {
> info(exp.getMessage());
> LogProxy.saveEntry(exp);
> }
> }
> });
>
> //add forms
> add(returnUserForm);
> add(newUserForm);
> }
>}
>
>...the "BasePage" class:
>
>public abstract class BasePage extends WebPage
>{
> private String pageTitle = "My page title!";
>
> public BasePage()
> {
> //add page title
> add(new Label("title", new PropertyModel(this, "pageTitle")));
>
> //add page components
> add(new TrailPanel("trailPanel",
> TrailFactory.getUserPageTrail(this.getPageClass().getSimpleName())));
> add(new HeaderPanel("headerPanel"));
> add(new FooterPanel("footerPanel"));
> }
>
> public final String getPageTitle()
> {
> return pageTitle;
> }
>
> public final void setPageTitle(String title)
> {
> this.pageTitle = title;
> }
>
> protected void redirect(String url)
> {
> //disable wicket redirecting
> getRequestCycle().setRedirect(false);
>
> //make sure no output for the current cycle is sent
> getRequestCycle().setRequestTarget(EmptyRequestTarget.getInstance());
>
> //set absolute URL to redirect to
> getResponse().redirect(url);
> }
>}
>
>...just in case, the application class:
>
>public class ProductCatalogApp extends WebApplication
>{
> /**
> * initialize application resources
> */
> @Override
> public void init()
> {
> //mount pretty URLs
> mountURLs();
>
> //create external images resource
> getSharedResources().add("imageResource", new ImageResource());
>
> //start timer services
> TimerProxy.init();
> }
>
> /**
> * set application home page
> */
> public Class getHomePage()
> {
> return ProductCatalog.class;
> }
>
> /**
> * set custom session class
> */
> @Override
> public Session newSession(Request request, Response response)
> {
> return new UserSession(ProductCatalogApp.this, request);
> }
>
> @Override
> protected IRequestCycleProcessor newRequestCycleProcessor()
> {
> return new HttpsRequestCycleProcessor(new HttpsConfig(8080, 8181));
> }
>
> /**
> * Simple method for listing bookmarked pages with "pretty" URLs
> *
> */
> private void mountURLs()
> {
> mount(new HybridUrlCodingStrategy("/login", Login.class));
> mount(new HybridUrlCodingStrategy("/products", ProductCatalog.class));
> mount(new HybridUrlCodingStrategy("/category", CatalogCategory.class));
> mount(new HybridUrlCodingStrategy("/product-detail",
>ProductDetail.class));
> mount(new HybridUrlCodingStrategy("/cart", Cart.class));
> mount(new HybridUrlCodingStrategy("/account", UserAccount.class));
> mount(new HybridUrlCodingStrategy("/addresses", ContactInfo.class));
> mount(new HybridUrlCodingStrategy("/payment", PaymentInfo.class));
> }
>}
>
>Hopefully something stands out to someone here...I don't see what could be
>causing it?
>
>Thanks again,
>
>-v
>
>On Sun, Dec 20, 2009 at 9:29 PM, <[email protected]> wrote:
>
>> Hi VGJ,
>>
>> If, as you say you can reproduce this in your storefront app no matter
>> where you use it then you may want to reduce this to a testcase and
>> create a jira issue from it.
>>
>> You are already writing that you can reproduce it and consequently it
>> would be only a matter of removing all distracting detail from your
>> storefront until further simplification is no longer possible. I can't
>> see how otherwise anyone could help you with your issue.
>>
>> In any case, glitches like you mention should not happen whether the
>> problem is in the Wicket framework domain or in the application
>> domain. If it is in the application domain, as it would usually be the
>> case because Wicket is mature, then there would still be a benefit of
>> publishing the issue e.g. in a Wiki article so that others would not
>> make the same mistake.
>>
>> Good luck!
>>
>> Bernard
>>
>> On Fri, 18 Dec 2009 14:58:15 -0700, you wrote:
>>
>> >I was unable to re-create it in a simple web app w/ a few pages. However,
>> >no matter where I use it in my storefront app, it happens.
>> >
>> >It's very strange because it starts a page "late". I put the annotation
>> on
>> >the User Account page, yet it doesn't switch to https until I reach the
>> >*following* page in the checkout process. I just stuck it on the general
>> >Login page that exists outside of the checkout process...and when I click
>> >the link from the home page to go to the Login page using
>> >setResponsePage(new Login()), it doesn't switch to https. Instead, I
>> enter
>> >the user/pass and submit...THEN it goes to https, then I'm able to
>> re-enter
>> >and login.
>> >
>> >Very strange behavior...I have no idea what might be causing it.
>> >
>> >I use various Panels throughout the side, would that have any influence on
>> >it? For example, the link in the header to go to the Login page is inside
>> >of a straightforward Panel. The entire site uses markup inheritance as
>> >well.
>> >
>> >On Fri, Dec 18, 2009 at 9:29 AM, VGJ <[email protected]> wrote:
>> >
>> >> I'll create one and post it, if I can.
>> >>
>> >> -v
>> >>
>> >>
>> >> On Fri, Dec 18, 2009 at 9:21 AM, Igor Vaynberg <[email protected]
>> >wrote:
>> >>
>> >>> can you recreate in a quickstart?
>> >>>
>> >>> -igor
>> >>>
>> >>> On Fri, Dec 18, 2009 at 7:56 AM, VGJ <[email protected]> wrote:
>> >>> > I'm now using @RequireHttps to switch to https on certain pages but
>> it's
>> >>> not
>> >>> > quite working right.
>> >>> >
>> >>> > In our storefront app, I'm switching to https at the point in the
>> >>> checkout
>> >>> > process where you view your cart, and then proceed to a page to
>> either
>> >>> login
>> >>> > or create an account. When I submit my username and password, the
>> >>> > validation fires as if I entered nothing into the form. Enter it a
>> >>> second
>> >>> > time and it works - the validation doesn't trigger. Everything was
>> >>> entered
>> >>> > correctly the first time around...so it's as if the form is being
>> posted
>> >>> on
>> >>> > its own, when the page loads? Every page with @RequireHttps that has
>> a
>> >>> > form, does this.
>> >>> >
>> >>> > What do I need to do to change to accommodate validation under
>> >>> @RequireHttps
>> >>> > pages?
>> >>> >
>> >>> > Currently you just see a lot of forms w/ fields like this:
>> >>> >
>> >>> > add(new TextField("username").setRequired(true));
>> >>> >
>> >>> > ...with a pretty common feedback panel:
>> >>> >
>> >>> > <div id="feedbackPanel">
>> >>> > <span wicket:id="feedbackPanel" class="warning" />
>> >>> > </div>
>> >>> >
>> >>> > Thanks!
>> >>> >
>> >>> > -v
>> >>> >
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>> 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]