RE: Is it possible to set the session?
You need two requests because in the first one you don't have yet have any session attached to the request you make to the server. And the server response will just be to attach JSESSIONID cookie and tell the browser to repeat the first request with the JSESSION cookie attached(you can redirect to the same page or another). So now this new request has the sessionid you require. In 1.4 I think you can throw a RedirectToUrlException but take a look at what/how it does it because I see it extends AbstractRestartResponseException and if you set the cookie before you throw it, I'm pretty sure it will reset the addCookie method from the response, so you may have to override it. Again firebug will show you if the cookie was set or not. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Is-it-possible-to-set-the-session-tp4281720p4285767.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: Is it possible to set the session?
Hi Cosmin, What have you tried? Sending 1. .../frame_page;jsessionid=123 or 2. .../frame_page?jsessionid=123. The first option may work while the second it's normal not to have any impact on the session but can be used to get the sessionid as a parameter. The 1. option if it works, is not really fullproof, as from my experience if the user already has a JSESSIONID cookie, the value in the cookie takes precedence so the user will come in the frame page with an old sessionid, but it's simplest. And since you say that we cannot set cookies for the frame, I'm thinking the solution is to set the sessionid cookie "manually" by adding it to the response from the frame. Since this first request will not have a session created, we need to force the browser to reload the page/redirect to another page after we set the session cookie, and the new request will have the required session with it: So I'm saying in your frame page page you do something like FramePage extends WebPage { ... getRequestCycle().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler("/page_to_redirect_after_set_session") { @Override public void respond(IRequestCycle requestCycle) { WebResponse response = (WebResponse)requestCycle.getResponse(); String sessionId = getRequest().getQueryParameters().getParameterValue("sessionId").toString(); Cookie cookie = new Cookie("JSESSIONID", sessionId); cookie.setMaxAge(-1); response.addCookie(cookie); super.respond(requestCycle); } }); } Take care that if you decide on throwing RestartResponseException instead it does a restart of the old response so your addCookie command will be lost. Firebug is a great tool that helps you in this, as you will need to look on the response for Set-Cookie with JSESSIONID response from the frame page. PS: Yes, I'm from Romania. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Is-it-possible-to-set-the-session-tp4281720p4285390.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: Is it possible to set the session?
Hello, Maybe pass the sessionid in the url like a query parameter to the page you open in an iframe and then read the url parameter and return from that page a response with a JSESSIONID header equal to the value of the session. Subsequent requests to the page in the iframe will have this sessionid. However using the same session could cause problems with the PageMap? Not sure about this as it probably should be the same as opening the application in two browser windows. I'd rather go for storing the information that must be shared in a cache/map and pass around as an url parameter the key to lookup in the cache but since I don't know the full story... - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Is-it-possible-to-set-the-session-tp4281720p4285158.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: AW: adjust my web application for smartphone like iPhone
Hi, The way I do this is to use the style attribute in the wicket session. Wicket's default ResourceStreamLocator looks for files with the pattern filename_style_locale.html and falls back to filename.html So I have a RequestCycleListener that decides based on headers what type of a request it is, and sets the style on the session, say for ex. "mobile". Wicket in turn serves pages TemplatePage_mobile.html if it finds it, otherwise it falls back to TemplatePage.html So I can contribute the mobile.css and have a complete custom mobile view of the page in a customized _mobile.html if I need to, otherwise the same version used for desktop is being served. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/adjust-my-web-application-for-smartphone-like-iPhone-tp4235060p4236699.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Overridable css resource
Hi Martin, That's a good solution, currently I keep the response.renderCSSReference(new CustomCssResourceReference("front.css")) but implement a custom DecoratingHeaderResponse to chose if I return instead of the string the original packaged css resource in the war file. DecoratingHeaderResponse public void renderCSSReference(ResourceReference reference) { if(reference.getScope()) and if the css file is available do a super.renderCSS(reference.getName()) and if not return a new CssResourceReference(reference.getScope(), reference.getName()) However I was not fully confident about this approach of rendering the css string, because Wicket cannot apply the caching strategy addition of a IStaticCacheableResource. Right now I mounted a that takes the name of the resource from the url. app.mountResource("/custom/css/${name}", new CustomDirResourceReference()); to solve any requests for /custom/css/front.css but also have a custom ResourceReferenceRegistry that automatically creates the ResourceReference for CustomCssResourceReferences: protected ResourceReferenceRegistry newResourceReferenceRegistry() { return new ResourceReferenceRegistry() { @Override protected ResourceReference createDefaultResourceReference(ResourceReference.Key key) { if(key.getScope().equals(CustomCssResource.class.getName())) { return new CustomCssResourceReference(key.getName()); } return super.createDefaultResourceReference(key); } }; } I only need to solve the fact that it mounts it to a package wicket/resource/com.dada.web.frontend.resource.CustomCssResource/front-ver-1324746271000.css and not to a "nice" url perhaps something like getSharedResources().putClassAlias() - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Overridable-css-resource-tp4229370p4235219.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Overridable css resource
Hi all, I'm trying to serve some css files from a custom dir outside the web dir. It should get a little more complicated that I'd want to fallback to serve the file from a package location if it's not found in the custom-css folder, but let's keep it simple first. I've created a class public class CustomCssResource extends AbstractResource implements IStaticCacheableResource { public CustomCssResource(String path) { this.path = path; } ... } that returns the css file found at path location. And public class CustomCssResourceReference extends ResourceReference { public CustomCssResourceReference(String name) { super(scope, "custom-css-dir/" + name); } public IResource getResource() { return new CustomCssResource(name); } } In pages I do something like this: response.renderCSSReference(new CustomCssResourceReference("front.css")); Problem is that I'd want to mount this serving of resources from "/customcss" But how should this be done? Because I cannot just do app.mountResource("/customcss", new CustomCssResourceReference("???")); Should I bind as SharedResources all css files instead of using CustomCssResourceReference? Thanks. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Overridable-css-resource-tp4229370p4229370.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: usage of JavascriptFilteredIntoFooterHeaderResponse
Hi Robert, Did someone offer you an answer with the fact that the class JavaScriptFilteredIntoFooterHeaderResponse is final? I've got the exact same question. I mean surely I don't want ALL my JS to end up in the footer like JavaScriptFilteredIntoFooterHeaderResponse method seems to be doing: protected JavaScriptAcceptingHeaderResponseFilter createFooterFilter(String footerBucketName) { return new JavaScriptAcceptingHeaderResponseFilter(footerBucketName); } but rather override it to implement a more selective filter. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/usage-of-JavascriptFilteredIntoFooterHeaderResponse-tp3302046p4212101.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
ResourceResponse to return error status code but also JSON error message
Hello, I'm using an AbstractResource to return JSON entities. Problem is that it seems you cannot also return an error code and also the JSON string with detailed message in case of error. response.setWriteCallback(new WriteCallback() { @Override public void writeData(final Attributes attributes) { ((WebResponse)attributes.getResponse()).write(errorResponse); ((WebResponse)attributes.getResponse()).sendError(503, "Logical Error"); } } Because sendError begins with a checkHeader() method that throws a Header was already written to response! error Any ideas how I can get this working? Thanks. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/ResourceResponse-to-return-error-status-code-but-also-JSON-error-message-tp4189792p4189792.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Bypass CDATA contribution on script tags
Hi Martin, Problem was, the JS dev was specific about not wanting to contribute to the head portion the JS template. What I've done for a quick solution is that we moved the js templates in a separate .tmpl files which sit next to the .html Then I use a PackageTextTemplate to provide the template string to replaceComponentTagBody of a WebMarkupContainer. The template file contains all the embeded in
Re: Avoid creating an HttpSession before login
This created session on RestartResponseAtInterceptPageException may also lead to a possible "Session Fixation" attack in one that a malicious user tries to access your site and is redirected to the login page but now with a session created. The malicious user could then pass to a possible victim the url to your site but also with the jsessionid of his session also in the url. The victim user would then authenticate in your site and that session would be marked as authenticaticated. But since the malicious user also knows the jsessionid of the now authenticated session, he can also act as on behalf of the user. This is another reason why you would may want your LoginPage to be stateless. But to prevent such an attack reassigning a sessionid would solve this attack. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Avoid-creating-an-HttpSession-before-login-tp4176286p4178605.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Bypass CDATA contribution on script tags
Hi all, Our javascript developer complains that Wicket automatically adds the CDATA part whenever it encounters the *script* tag. He's trying to embed a template in the html file(not in the head section) and he gets a bunch of CDATA along with the html which will get multiplied(we're creating a breadcrumb component) we're using underscore.js and the idea it's based on http://ejohn.org/blog/javascript-micro-templating/ I've said that the CDATA is there to pass the validation of the html, but he says html5 is not xhtml and is much looser with validations. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Bypass-CDATA-contribution-on-script-tags-tp4176752p4176752.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Wicket 1.5 PageParameters vs IRequestParameters question.
Hello Pedro, In my mind IRequestParameters and PageParameters should have stemmed from a common interface, extend some even generic one like(IKeyValues, IParams) but I trust you guys see the bigger picture maybe IRequestParameters is a very generic thing that doesn't have to mean a page's parameters. By "IRequestParameters interface has PageParameters correspondent API to access page parameters. Can be accessed like: RequestCycle.get().getRequest().getQueryParameters()" you mean that IRequestParameters has methods present in PageParameters? (yes I know, that why I thought the methods could have been shared in a common interface). "If you want to recreate page parameters for some request, you can use the PageParametersEncoder". It seems that PageParametersEncoder handles how the parameters are rendered in the url(declared somehow like mounting pages) and I guess it does not have access to the original page parameters. And not all the parameters must be cloned, some must get overwritten and reflect the new state of the page. What I had in the original code is that I would have a helper method: public static PageParameters keepPageParameters(PageParameters pageParams, String[] paramNamesToKeep) { // iterate through pageParams and recreate those with matching names } and pass these parameters to bookmarkablepagelinks. I would use this method from PageParameters coming both from super(PageParameters) and RequestCycle.get().getPageParameters(). Now I must have two methods one that handles PageParameters and one that handles , actually I have just one method now public static PageParameters keepRequestPageParameters(IRequestParameters pageParams, String[] paramNamesToKeep) and always get my parameters from RequestCycle.get().getRequest().getQueryParameters() not from but it would have been better in my opinion to have a public static PageParameters keepPageParameters(IParams pageParams, String[] paramNamesToKeep) { } Btw does someone have a better way of keeping page parameters from one page to another. I like the utility method that I see in the page I'm working on what parameters I'm working with. I have not looked upon the new request cycle, I plan to, as migration to 1.5 is triggered by the feeling that somehow stateless ajax behaviours would be easier to implement in 1.5. My current approach to was to have zero compile errors and then understand what is changed internally. Regards - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Wicket-1-5-PageParameters-vs-IRequestParameters-question-tp3442239p3444058.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Wicket 1.5 PageParameters vs IRequestParameters question.
Hello everybody, I''m in the process of migrating an app from 1.4 to 1.5-RC3 I see that the PageParameters and IRequestParameters are pretty separate things now. Any reason why it's done this way and why they not extend a Common Interface that exposes methods like getParameterNames getParameterValue. Because I have this usecase: I try to keep a stateless page by heavily encoding state in the pageParameters, so on different actions I'm resending parameters that I initially received on this page. In 1.4 there was no difference in handling parameters that came from constructor WebPage(final PageParameters parameters) and those that were received in the request( RequestCycle.get().getPageParameters()) and there was very easy to reuse the same parameters received in the request - clone Is it an easy method to create PageParameters from IRequestParameters(which I get from RequestCycle.get().getRequest().getRequestParameters()), or iterating and adding them to PageParameters is the way to go? Thank you. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Wicket-1-5-PageParameters-vs-IRequestParameters-question-tp3442239p3442239.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Stateless Wicket and Ajax
Hello everybody. It is indeed as Robert is saying. And after changing the code, it works Component component = page.get(pageRelativeComponentPath); // See {@link // BookmarkableListenerInterfaceRequestTarget#processEvents(RequestCycle)} // We make have to try to look for the component twice, if we hit the // same condition. if (component == null) { page.prepareForRender(false); component = page.get(pageRelativeComponentPath); //Component no longer null Looking at "BookmarkableListenerInterfaceRequestTarget#processEvents" we find the comment: "this is quite a hack to get components in repeater work. But it still can fail if the repeater is a paging one or on every render it will generate new index for the items..." I was trying to implement a comment system for articles. The stateless ajax buttons would be reply buttons for comments that can span multi levels. I can't feel confident that the comment hierarchy will not change by the time the user clicks reply. Currently I'm thinking of moving the reply as a behaviour outside the repeater, and use JQuery to pass the comment id to that behaviour so I can know to which comment the user is replying. Thanks everybody. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Stateless-Wicket-and-Ajax-tp3348266p3352490.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Stateless Wicket and Ajax
Yes I was looking at jolira tools, but I get the exception ""unable to find component "" and looking at the source: final Component component = page.get(pageRelativeComponentPath); if (component == null) { throw new WicketRuntimeException("unable to find component with path " + pageRelativeComponentPath + " on stateless page " + page + " it could be that the component is inside a repeater make your component return false in getStatelessHint()"); } and yes I'm using it inside a ListView, so this means that StatelessAjaxFallbackLink cannot be used inside a repeater(and have a stateless page)? Martin I see that you have not replaced StatelessWebRequestCodingStrategy in your https://github.com/martin-g/wicket-stateless https://github.com/martin-g/wicket-stateless . So the problem with the ajax link in the repeater remains? I'm trying to understand if there is a known case of not using StatelessAjaxFallbackLink inside repeaters. Or is it somehow my fault? My repeater model does not change beetween renderings so the pageRelativeComponentPath should be the same. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Stateless-Wicket-and-Ajax-tp3348266p3350179.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Stateless Wicket and Ajax
Hello everybody. I'm interested in Wicket for a public site. I want to use stateless pages in order to have nice looking pages indexed by Google(no JSESSIONID in the url) There is an approach to remove JSESSIONID from the url for search bots but I do not like it since that would mean that any link to another page contained in that page would cause a Page Expired error since the session is lost thus no deep page navigation. So how would you implement AJAX since having AjaxLinks and even AjaxEventBehaviour makes a stateless page become statefull? There is the jolira tools wicket-stateless which provides StatelessAjaxFallbackLink, but it seems that there is the link is inside a repeater "it could be that the component is inside a repeater make your component return false in getStatelessHint()" which pretty much means that the page becomes statefull. I'm even considering using JQuery for AJAX and so looked at WiQuery with WiQueryAbstractAjaxBehavior but alas it extends AbstractDefaultAjaxBehavior. So perhaps using JQuery ajax requesting from with a generic WebPage serving wicket panels based on page parameters? This seems a poor approach. In the end, what other framework would you recommend? Preferably JAVA based. Maybe Play framework(not a fan of the templating sintax)? Thank you. - http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Stateless-Wicket-and-Ajax-tp3348266p3348266.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Call Ajax on Parent Page from Popup page.
I have solved it by overiding getPreconditionScript() in the behaviour to return "return true;": protected CharSequence getPreconditionScript() { return "return true"; } I hope I do not run into any problems with this. Cheers. - http://balamaci.wordpress.com http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Call-Ajax-on-Parent-Page-from-Popup-page-tp2134034p2165297.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Call Ajax on Parent Page from Popup page.
Thank you Jeremy, It's working this way, although that label was a simple container for the script: I do not understand why it was not working. Now I have a problem in the sense that it's working only let's say "the first time". Because I get: Ajax GET stopped because of precondition check, url:?wicket:interface=:13:right-content-panel-container:right-content-panel-id:details-panel:tabs:panel:create-proposal-panel::IBehaviorListener:0:-1 I believe it's because this behavior is added in an ajax tab panel. If I change the tab panel and then return back, I guess the behavior it's being added again in the header and somehow gets mixed up. If I do not change tab panels it works every time. It's not related to calling the function from the popup, I get this error even if I do call the method as onclick in the same page. - http://balamaci.wordpress.com http://balamaci.wordpress.com -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Call-Ajax-on-Parent-Page-from-Popup-page-tp2134034p2165281.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Call Ajax on Parent Page from Popup page.
Hello. I have a case where I'm trying to refresh the parent page from a popup page. On the parent page I have: AbstractDefaultAjaxBehavior clientSideCallingBehavior = new AbstractDefaultAjaxBehavior() { protected void respond(AjaxRequestTarget target) { System.out.println("Refreshing ..."); } }; Label lblCallback = new Label("refreshJS", new LoadableDetachableModel() { protected Object load() { String callbackScript = "var callRefresh = function(value) { wicketAjaxGet('" + clientSideCallingBehavior.getCallbackUrl(false) + "', null, null, function() {return true;}); return false;}"; return callbackScript; } }); lblCallback.add(clientSideCallingBehavior); lblCallback.setEscapeModelStrings(false); add(lblCallback); In the popup page I have on a link call the callRefresh method: AjaxLink cancel = new AjaxLink("cancel") { public void onClick(AjaxRequestTarget target) { target.appendJavascript("window.opener.callRefresh();"); } }; org.apache.wicket.protocol.http.request.InvalidUrlException: org.apache.wicket.WicketRuntimeException: component right-content-panel-container:right-content-panel-id:details-panel:tabs:panel:refreshJS not found on page com.asf.ufe.web.pages.evaluation.AccountEvaluationPage[id = 2], listener interface = [RequestListenerInterface name=IBehaviorListener, method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:262) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1310) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115) Caused by: org.apache.wicket.WicketRuntimeException: component right-content-panel-container:right-content-panel-id:details-panel:tabs:panel:refreshJS not found on page com.asf.ufe.web.pages.evaluation.AccountEvaluationPage[id = 2], listener interface = [RequestListenerInterface name=IBehaviorListener, method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:426) at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:471) at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:144) ... 26 more If I do make the call to callRefresh from the Parent Page(the same page where the behaviour is located) with onclick="callRefresh();return false;" it works. Do you have any ideeas? Does it have to be the last page in the PageMap for ajax to work? Thanks. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Model to use for static Label text
Yes you are right, if we set the variable in the constructor but make it null on detach, we will not have it on getObject on next render, so we need to keep a reference to it. I guess the only choice would be to the LoadableDetachableModel, which could be thought detrimental for code clearness outweighing the storage impact, maybe would make sense maybe for a large string - for ex. setting some generated javascript on a label. But is a page consider stateless if we only have this static string ending in the page store? bgooren wrote: > > Well, a couple of strings more or less usually don't make that much of a > difference. I personally prefer to save some typing and have better > readability then to save a few bytes here and there. > > Furthermore, if you were to create an implementation of IModel > specifically for this case, you would always need to store the string as > an instance variable, thus creating the "problem" you are trying to solve. > > > Serban Balamaci wrote: >> >> Hello. >> I've always used >> add(new Label("alabel", new Model("A message")); - does this not save the >> "A message" string in the page store? >> Is it not better to do add(new Label("alabel", new >> LoadableDetachableModel() { >> >> @Override >> protected String load() { >> return "A message"; >> } >> })); - while this option does not save it in the page store. >> Is it because of the coding amount that nobody is using this? I guess not >> because we could extend IModel and create a "label model" with a string >> property that is cleared on detach. >> >> >> - >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> > > -- View this message in context: http://old.nabble.com/Model-to-use-for-static-Label-text-tp27695054p27700379.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Model to use for static Label text
Hello. I've always used add(new Label("alabel", new Model("A message")); - does this not save the "A message" string in the page store? Is it not better to do add(new Label("alabel", new LoadableDetachableModel() { @Override protected String load() { return "A message"; } })); - while this option does not save it in the page store. Is it because of the coding amount that nobody is using this? I guess not because we could extend IModel and create a "label model" with a string property that is cleared on detach. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Wicket, Ajax and JSON
Thanks guys, loved the AbstractAjaxBehavior solution, and by the way jqgrid seems to be more active and the way to go(thanks for pointing it Richard). Keeping fingers crossed for wiQuery and if they even bring the flexi or jqgrid to wicket it's gonna prove you can have awesome visual components in Wicket too. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: Wicket, Ajax and JSON
Hello John. This I would put in the same category as the "Controller Page" solution. And well, that kind of separation will not make a nice reusable component. I want in the end to get maybe even with something of a model behind it and not have such a separation, although I guess the model of the component would know to pass the parameters to the JSON servlet. And to get over the problem of authentication and injection of other beans that can even be coded as a Wicket Page. Curently I'm looking in the direction of not extending AbstractDefaultAjaxBehavior but looking more at the base classes in AbstractDefaultAjaxBehavior and implement something like public final void respond(final RequestCycle requestCycle) { final Application app = Application.get(); // Determine encoding final String encoding = app.getRequestCycleSettings().getResponseRequestEncoding(); // Set content type based on markup type for page final WebResponse response = (WebResponse)requestCycle.getResponse(); response.setCharacterEncoding(encoding); response.setContentType("text/xml; charset=" + encoding); response.write(json data); } -Original Message- From: John Armstrong [mailto:siber...@siberian.org] Sent: 31 iulie 2009 17:33 To: users@wicket.apache.org Subject: Re: Wicket, Ajax and JSON Maybe you are trying to drive screw into a board with a hammer? I recommend just creating servlet to serve up these json style responses and then use the excellent json.org libraries(instead of hand constructing json transform your data structures into json automatically). The only issue you'll have here is authentication so if you need a unified auth system you will need to get that up and running in your json responder (wicket would do it automatically). WebApplication /* This is the JSON Gatewayn JSON Gateway JsonGateway your.package.json.JsonGateway getSomeData /json/getSomeData John- On Fri, Jul 31, 2009 at 6:34 AM, Serban Balamaci wrote: > Hello. I'm trying to create a wicket component out of FlexiGrid > http://www.flexigrid.info/ . > > The javascript for the component requires an address from which it will > receive data in the form of a JSON response. > > > > I'm not sure what is the best way to go about it. Simple and most ugly > approach would be to have something of a "Controller Page" > > a page that takes parameters such as the entity that is being retrieved and > also paging info, sort order, etc and returns the JSON response. > > I do not like this aproach as, most obvious reason is that it would not be > obvious from the component what you need to do in order to get it to work. > > > > I would much more preffer to having a callback method that returns the > json. > So I have created a > > > > AbstractDefaultAjaxBehavior clientConnectBehavior = new > AbstractDefaultAjaxBehavior() { > > > >protected void respond(AjaxRequestTarget ajaxRequestTarget) { > > ajaxRequestTarget.prependJavascript("{page: 1, total: 239 > }"); > > > >} > > and used clientConnectBehavior.getCallbackUrl() as the url passed to the > flexigrid. > > > > Unfortunately the problem is the response when invoked is wrapped in a > > > > > > > > > So my question is how to get only the JSON part without the version.>, > . and decoration. Can it be bypassed? Shoul I > override something in AbstractDefaultAjaxBehavior? > > Or any other ideea to go about the problem. > > > > Thank you, > > > > Serban > > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Wicket, Ajax and JSON
Hello. I'm trying to create a wicket component out of FlexiGrid http://www.flexigrid.info/ . The javascript for the component requires an address from which it will receive data in the form of a JSON response. I'm not sure what is the best way to go about it. Simple and most ugly approach would be to have something of a "Controller Page" a page that takes parameters such as the entity that is being retrieved and also paging info, sort order, etc and returns the JSON response. I do not like this aproach as, most obvious reason is that it would not be obvious from the component what you need to do in order to get it to work. I would much more preffer to having a callback method that returns the json. So I have created a AbstractDefaultAjaxBehavior clientConnectBehavior = new AbstractDefaultAjaxBehavior() { protected void respond(AjaxRequestTarget ajaxRequestTarget) { ajaxRequestTarget.prependJavascript("{page: 1, total: 239 }"); } and used clientConnectBehavior.getCallbackUrl() as the url passed to the flexigrid. Unfortunately the problem is the response when invoked is wrapped in a So my question is how to get only the JSON part without the , . and decoration. Can it be bypassed? Shoul I override something in AbstractDefaultAjaxBehavior? Or any other ideea to go about the problem. Thank you, Serban