I am glad to be of help.
I agree, a wiki entry would be good.
btw TR also stands for Turkey :P
Cheers,
Mert
On 5/3/06, Romanowski, Tim <[EMAIL PROTECTED]> wrote:
Mert,Excellent explanation, thanks for your patience! The extra code that I was looking for was code that would be in the originating page, but I think you've explained that sufficiently now. I've implemented this and it appears to be working well. Perhaps such an example belongs in the wiki?Cheers,Tim
From: Mert Çaliskan [mailto: [EMAIL PROTECTED]]Sent: Wednesday, May 03, 2006 2:56 PM
To: MyFaces Discussion
Subject: Re: Popup New Window with CommandLink onclick attributeHey Tim,
Actually that's all for passing parameters via URL between jsf pages. I commented your post below. Hope this helps.
On 5/3/06, Romanowski, Tim <[EMAIL PROTECTED] > wrote:Thanks for the link Mert. If you look at the page, it seems be missing 50% of the puzzle; it shows how to bind a variable in the target page, but it does not state how to pass that variable from the originating page
The subject of my blog is about passing parameters with the URL so i focus on the target page to get the determined parameter.
Sorry if it became a little confusing for all. So here it is. :)
The parameter should be passed via URL like /faces/myPage.jsp?myParam=blahBlah. You want to open a custom sized window. so rewrite the url with the parameters in your jscript. You can also use _expression_ languages with the jscript so no need to worry here to populate the url.
--the resolver function is resolving the binding of the current (i.e., the new popped up window) page, but I need to use the value from the originating page. I don't understand how one does so from the originating page when you wish to create a popup.
param map is the key here. From the JSF Spec:
param: an immutable map of the request parameters. So all the parameters specified in URL can be accessed through this map.
Resolving an _expression_ like #{param.myParam} helps retrieve the value.
I would like to control the size of the popup, which appears only to be available if I open the window via _javascript_. That requirement aside, do you by any chance have a working example of a link opening a new window, first passing a value from one page to the next? This is not nearly as straightforward as I would expect.
Yes i've implemented this but all the code is also in the blogpost too.
add a property
add getter/setter and resolver method.
add a hidden field & bind the property to hidden field
and use the passed value like getMyParam().
thats all.
The website [1] below suggests using output link, but I'm not sure what they did to make it work (i.e., they call target="_blank", but I don't see them attempting to first bind a value as would be the case with a commandLink).
outputlink also renders a <a> tag for itself. So you can simulate a popup action like,
<h:outputLink id="linkRoller" value="#" href="" target="_blank" >http://www.jroller.com')">
<h:outputText id="popupText" value="my popup page"></h:outputText>
</h:outputLink>
with window.open command you can specify your window size.
Regards,
Mert
To: MyFaces Discussion
Subject: Re: Popup New Window with CommandLink onclick attributeto pass parameters between pages via url,
http://www.jroller.com/page/mert?entry=how_to_pass_request_parameters
Regards,
Mert..
On 5/3/06, Romanowski, Tim <[EMAIL PROTECTED]> wrote:Thanks Matthias, the link you've listed does explain why I am not
setting a value before the onclick method is called. Unfortunately,
although that explains why I cannot update a backing value via a binding
method before opening a new window, I still am at a loss as to how I can
in fact open a new window that is passed the current value of my
datatable row.
**Does anyone have an example where they generate a popup window and
pass a value for use by the new window? I do not understand how a
managed bean might be instantiated if I am submitting a form via
_javascript_, as explained below. Ideally, I'd like to simply have a
commandLink in my dataTable that I can use to open the new window, and
bind a value before the page in that window is actually executed.
I _have_ tried one thing that is similar a hack used for getting the
apache display taglib to work with commandLinks: In addition to
surrounding my JSF datatable with a form tag, I've included in that form
tag a standalone commandLink. I then call a _javascript_ method from the
datatable which sets the _link_hidden_ value of the form to the page I'd
like to open; I also set a dummy param value (I called it "id") like so:
<h:form id="myMainForm">
<t:dataTable value="#{pageFlow.dataList}" var="dbRow">
... Some table columns ...
<t:column>
<f:facet name="header">
<f:verbatim>Header Name</f:verbatim>
</f:facet>
<h:form>
<h:commandLink > value="#dbRow.cellValue}">
</h:commandLink>
</h:form>
</t:column>
... More columns ...
<t:commandLink action="" id="viewNewPageLink"
<f:param name="id" value="" />
</t:commandLink>
</h:form>
<script type="text/_javascript_">
function myJavaScript(cellValue){
var f = document.forms['myMainForm'];
f.elemnts['myMainForm:_link_hidden_'].value='myMainForm:viewNewPageLink'
;
f.elements['id'].value=cellValue;
f.submit();
}
-----Original Message-----
From: [EMAIL PROTECTED] [mailto: [EMAIL PROTECTED]] On Behalf Of
Matthias Wessendorf
Sent: Tuesday, May 02, 2006 5:55 AM
To: MyFaces Discussion
Subject: Re: Popup New Window with CommandLink onclick attribute
> befor executing an action. However, because I am using the onclick
> attribute to open a new window, the window seems to be rendered before
> the updateActionListener actually sets the value. Since the target
> attribute
this is because you are doing a "non-postback" request Phase 1
(RESTORE_VIEW) goes directly to Phase 6 (RENDER_RESPONSE)
you may take a look at [1]
-Matthias
[1] _javascript_ w/ JSF
(http://wiki.apache.org/myfaces/_javascript_WithJavaServerFaces )
> doesn't work, I can't do something like 'target="this.form._blank". I
> am using Apache Beehive for my pageflow controller, and am attempting
> to set a value in my controller class; the idea is that when the popup
> page is created, the new page's backing bean can grab the value I
> previously set in the controller via the commandLink.
>
> I'm new to webapp development and jumped into JSF/Beehive headfirst,
> so my misunderstanding of _javascript_ may be the culprit. Any help
> would be greatly appreciated.
>
> Here's a sample of the code:
>
> <t:column>
> <f:facet name="header">
> <f:verbatim>Header Name</f:verbatim>
> </f:facet>
> <h:form>
> <h:commandLink >> value="#dbRow.cellValue}">
> <t:updateActionListener
> property="#{pageFlow.thisSetsValueInMyController}"
> value="#{dbRow.cellValue}" />
> </h:commandLink>
> </h:form>
> </t:column>
>
> _javascript_ (currently in same page for trying this):
>
> <script type=text/_javascript_">
> Function myJavaScript(cellValue){
> popup =
> window.open("http://localhost:8080/XYZ/controller/goNewPage.do",
> "page name",
> "height=300,width=300,resizable=1,toolbar=no,menubar=no");
> popup.focus();
> }
> </script>
>
>
>
> TR
>
--
Matthias Wessendorf
Aechterhoek 18
48282 Emsdetten
http://jroller.com/page/mwessendorf
mwessendorf-at-gmail-dot-com

