Hi Arnold,

I don't see why a solution with request parameters is more elegant than
using a JSF/Spring managed bean?

Best regards,
Bart

On Fri, Nov 20, 2009 at 08:21, Arnold Preg <ap...@mailbox.hu> wrote:

> Hi Bart,
>
> I asked it already in the spring forum but nobody answered. I read the
> spring reference already but I think it's not particular and I did not see
> example for this problem in the example program neither. There is a
> requestParameters EL variable to reach the request parameters as I know, but
> the problem is I can't send an appropriate parameter.
> I will looking for solution in this <
> http://www.apress.com/book/view/9781430216247> book too.
> The scoped bean thing (Spring call it Spring Managed Bean) could works like
> a charm just like in plain JSF solutions, but I hoped there is an elegant
> way to handle this like the f:param in commandLink.
> Thank you for your help.
>
>
>
> On 2009.11.19. 10:32, Bart Kummel wrote:
>
>> Hi Arnold,
>>
>> I'm afraid I can't help you with the parameter sending problem. I think
>> you
>> should read the Spring WebFlow documentation. They must have implemented
>> an
>> elegant way to handle parameters. I think you should focus on setting a
>> value on a scope or in a bean that is on a scope. That way JSF and/or SWF
>> will do the hard parameter encoding/decoding for you. Generally speaking,
>> with JSF, you should be messing around with GET or POST parameters. I
>> can't
>> imaging SWF changes this. But as said, I don't know anything about SWF.
>> Perhaps you should ask this question on an SWF related mailing list or
>> forum.
>>
>> Composite Component: I think that is an elegant way to implement it, as I
>> said. Remember to not use any trh tag in your composite component. What
>> you
>> want can be achieved by using standard components, like outputText,
>> various
>> panelXyz variants, etc. In your main page you can do the iteration. You
>> could use<tr:iterator>, but with Facelets, it is also possible to use JSTL
>> iteration.
>>
>> Best regards,
>> Bart
>>
>> On Wed, Nov 18, 2009 at 20:06, Arnold Preg<ap...@mailbox.hu>  wrote:
>>
>>
>>
>>> I accept that making a composite component cleans the code etc. But I
>>> still
>>> have to iterate over the collection of books somehow, e.g. with
>>> tr:iterator,
>>> right?
>>> And I don't know how does it solve the parameter sending problem.
>>> With tr:inputHidden the POST parameters looks like this:
>>>
>>>  _noJavaScript    false
>>> *j_id33:0:j_id36:selectedBookId    1
>>> j_id33:1:j_id36:selectedBookId    2
>>> j_id33:2:j_id36:selectedBookId    3
>>> j_id33:3:j_id36:selectedBookId    4 *
>>> javax.faces.ViewState    H4sIAAAAAAAA...
>>> org.apache.myfaces.trinidad.faces.FORM    j_id30
>>> source    j_id33:0:j_id36:j_id41
>>>
>>> The point is the parameter's name is *"j_id33:0:j_id36:selectedBookId"
>>> *and
>>> so on. So, I could reference it on this name only in the flow definition,
>>> but of course it's not good. I need one form for one hidden field.
>>>
>>>
>>> On 2009.11.18. 11:51, Bart Kummel wrote:
>>>
>>>
>>>
>>>> Okay, now I get what you want. Good idea to post an image!
>>>>
>>>> If I were you, I would craete a Facelets Composition Component to render
>>>> a
>>>> single book's details (image, title, etc.) Inside that Composition
>>>> Component
>>>> you could use various Trinidad components to render the image, the
>>>> price,
>>>> the link, etc. (Use Google to find more info on Facelets Composition
>>>> Components.)
>>>>
>>>> Then you could use e.g. a<tr:panelGroupLayout>   or a<h:panelGrid>   or
>>>> something like that to distribute the items over a page as desired.
>>>>
>>>> As for passing on the selected book ID, have you tried using
>>>> <tr:inputHidden>?
>>>>
>>>> Best regards,
>>>> Bart
>>>>
>>>> On Wed, Nov 18, 2009 at 11:20, Arnold Preg<ap...@mailbox.hu>   wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> If I can reach this<http://i48.tinypic.com/2q207ib.png>(
>>>>> http://i48.tinypic.com/2q207ib.png ) look with skinning,  then yes.
>>>>> (In
>>>>> essence I don't need column headers, pagination bar, radiobuttons etc.
>>>>> Just
>>>>> the layout and collection handling function I need from tr:table in
>>>>> this
>>>>> case.)
>>>>> I think SWF can handle POST and GET parameters equally.
>>>>>
>>>>>
>>>>>
>>>>> On 2009.11.18. 10:33, Bart Kummel wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> If you only want to change the appearance, you should definitely take
>>>>>> a
>>>>>> look
>>>>>> at Trinidad's skinning
>>>>>> features<http://myfaces.apache.org/trinidad/devguide/skinning.html>.
>>>>>>
>>>>>> You can change the appearance of every Trinidad component this way,
>>>>>> while
>>>>>> keeping the functionality. Is that what you're looking for?
>>>>>>
>>>>>> As for you other question: what type of parameters does SWF expect?
>>>>>> POST
>>>>>> or
>>>>>> GET?
>>>>>>
>>>>>> Best regards,
>>>>>> Bart
>>>>>>
>>>>>> On Wed, Nov 18, 2009 at 09:35, Arnold Preg<ap...@mailbox.hu>
>>>>>>  wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I have to use Trinidad components, and minimalize the use of manual
>>>>>>>  HTML
>>>>>>> or js codes. I do not like to use trh: components, but the tr:table
>>>>>>> appearance has not been being suitable and  I did not want to write
>>>>>>> own
>>>>>>> component because I thought the tr:table and iterate will do the work
>>>>>>>  and
>>>>>>> I never wrote an own component before yet, so this was left.
>>>>>>> Although,
>>>>>>> as
>>>>>>> I
>>>>>>> see the own component could be the best solution to reach the proper
>>>>>>> appearance. But one question is still here: How to send parameters
>>>>>>> with
>>>>>>> tr:commandButton to SWF correctly and easy? Thank you for your
>>>>>>> patience.
>>>>>>>
>>>>>>>
>>>>>>> On 2009.11.18. 8:54, Bart Kummel wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm afraid I still don't understand exactly what you need. However,
>>>>>>>> I
>>>>>>>> still
>>>>>>>> think you shouldn't use the approach with the<trh:tableLayout>, etc.
>>>>>>>> (Should you need *some* HTML for layout of your page, with Facelets
>>>>>>>> you
>>>>>>>> can
>>>>>>>> use HTML in your Facelet, so you don't need any<trh:...>     tag for
>>>>>>>> that
>>>>>>>> anymore.)
>>>>>>>>
>>>>>>>> If you want to use JSF, you should use JSF components that do the
>>>>>>>> hard
>>>>>>>> work
>>>>>>>> for you. You can search the Trinidad, Tomahawk and Tobago libraries
>>>>>>>> or
>>>>>>>> other
>>>>>>>> component libraries for a component that suits your needs. If
>>>>>>>> nothing
>>>>>>>> can
>>>>>>>> be
>>>>>>>> found, you can create your own JSF component. If you prefer to be
>>>>>>>> super
>>>>>>>> flexible in the HTML output, you should perhaps consider a framework
>>>>>>>> that
>>>>>>>> isn't component based, like JSF.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Bart
>>>>>>>>
>>>>>>>> On Tue, Nov 17, 2009 at 20:28, Arnold Preg<ap...@mailbox.hu>
>>>>>>>>  wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> On 2009.11.17. 13:50, Bart Kummel wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I don't have any experience with Spring WebFlow, so I can't help
>>>>>>>>>> you
>>>>>>>>>> on
>>>>>>>>>> that
>>>>>>>>>> part. But when it comes to your other question, as I understand
>>>>>>>>>> you
>>>>>>>>>> right,
>>>>>>>>>> you want to spread your list of books over multiple pages if the
>>>>>>>>>> number
>>>>>>>>>> of
>>>>>>>>>> books exceeds a certain value, right?
>>>>>>>>>>
>>>>>>>>>> This is simple to achieve, but you shouldn't use<trh:tableLayout>.
>>>>>>>>>> You
>>>>>>>>>> should use<tr:table>      instead.<tr:table>      will do all hard
>>>>>>>>>> work
>>>>>>>>>> for
>>>>>>>>>> you,
>>>>>>>>>> including the pagination of your data. Please read the
>>>>>>>>>> documentation
>>>>>>>>>> of
>>>>>>>>>> <tr:table><
>>>>>>>>>>
>>>>>>>>>> http://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_table.html
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> first.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> And regarding your<tr:subform>: you are right that you don't use
>>>>>>>>>> it
>>>>>>>>>> properly. In this case, it can be left out, you don't need it
>>>>>>>>>> here.
>>>>>>>>>>
>>>>>>>>>> One last remark: as I look at your code, I get the impression that
>>>>>>>>>> you
>>>>>>>>>> don't
>>>>>>>>>> get the idea of JavaServer Faces. The idea is to use components
>>>>>>>>>> that
>>>>>>>>>> render
>>>>>>>>>> a user interface for you. Those components perform all the hard
>>>>>>>>>> work
>>>>>>>>>> for
>>>>>>>>>> you. Generally speaking, you shouldn't be fiddling with repetition
>>>>>>>>>> in
>>>>>>>>>> any
>>>>>>>>>> JSF page definition. In this example, if you use a<tr:table>, the
>>>>>>>>>> only
>>>>>>>>>> thing you have to do is tell the table where the collection is
>>>>>>>>>> that
>>>>>>>>>> you
>>>>>>>>>> want
>>>>>>>>>> to show. The table component will do all the hard work, including
>>>>>>>>>> the
>>>>>>>>>> repetition and pagination. I hope this helps. Good luck!
>>>>>>>>>>
>>>>>>>>>> Best regards,
>>>>>>>>>> Bart Kummel
>>>>>>>>>>
>>>>>>>>>> On Tue, Nov 17, 2009 at 10:01, Arnold Preg<ap...@mailbox.hu>
>>>>>>>>>>  wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I'm newbie, so sorry for stupid questions. I'm trying to use
>>>>>>>>>>> Facelets
>>>>>>>>>>> 1.1.14. SWF 2.0.8. Spring 2.5.6. Apache Trinidad 1.2.12.  JBoss
>>>>>>>>>>> EL
>>>>>>>>>>> 2.0.1.
>>>>>>>>>>> and Hibernate JPA imp. but I think it's not relevant now. My
>>>>>>>>>>> English
>>>>>>>>>>> not
>>>>>>>>>>> too
>>>>>>>>>>> good let the code snippets speak because of this rather.
>>>>>>>>>>>
>>>>>>>>>>> borderLayout.xhtml
>>>>>>>>>>>
>>>>>>>>>>> <tr:document xmlns:ui="http://java.sun.com/jsf/facelets";
>>>>>>>>>>>    xmlns:h="http://java.sun.com/jsf/html";
>>>>>>>>>>>    xmlns:f="http://java.sun.com/jsf/core";
>>>>>>>>>>>    xmlns:trh="http://myfaces.apache.org/trinidad/html";
>>>>>>>>>>>    xmlns:tr="http://myfaces.apache.org/trinidad";
>>>>>>>>>>> title="#{pageTitle}">
>>>>>>>>>>> <tr:form id="mainForm">
>>>>>>>>>>> <tr:panelBorderLayout>
>>>>>>>>>>> <f:facet name="top">
>>>>>>>>>>> <ui:include src="searchbar.xhtml" />
>>>>>>>>>>> </f:facet>
>>>>>>>>>>> <ui:insert name="pageContent" />
>>>>>>>>>>> </tr:panelBorderLayout>
>>>>>>>>>>> </tr:form>
>>>>>>>>>>> <ui:debug />
>>>>>>>>>>> </tr:document>
>>>>>>>>>>>
>>>>>>>>>>> page.xhtml
>>>>>>>>>>>
>>>>>>>>>>> <ui:composition xmlns="http://www.w3.org/1999/xhtml";
>>>>>>>>>>>    xmlns:h="http://java.sun.com/jsf/html";
>>>>>>>>>>>    xmlns:f="http://java.sun.com/jsf/core";
>>>>>>>>>>>    xmlns:ui="http://java.sun.com/jsf/facelets";
>>>>>>>>>>>    xmlns:tr="http://myfaces.apache.org/trinidad";
>>>>>>>>>>>    xmlns:trh="http://myfaces.apache.org/trinidad/html";
>>>>>>>>>>>    xmlns:test="http://www.my.net/some/arbitrary/namespace";
>>>>>>>>>>>    template="/WEB-INF/layouts/borderLayout.xhtml">
>>>>>>>>>>>
>>>>>>>>>>> <ui:param name="pageTitle" value="Home" />
>>>>>>>>>>> <ui:define name="pageContent">
>>>>>>>>>>> <trh:tableLayout width="75%" borderWidth="0" cellSpacing="10"
>>>>>>>>>>> halign="center">
>>>>>>>>>>> <trh:rowLayout>
>>>>>>>>>>> <ui:repeat var="book" value="#{bestsellers}" offset="0" size="3">
>>>>>>>>>>> <!--<tr:iterator var="book" first="0" rows="4"
>>>>>>>>>>> value="#{bestsellers}">
>>>>>>>>>>>  -->
>>>>>>>>>>> <trh:cellFormat valign="bottom">
>>>>>>>>>>> <tr:commandLink action="selectBook2SeeDetails"
>>>>>>>>>>>                            text="#{book.title}">
>>>>>>>>>>> <f:param name="selectedBookId" value="#{book.bookId}" />
>>>>>>>>>>> </tr:commandLink>
>>>>>>>>>>>
>>>>>>>>>>> <!-- Probably I don't use the subform properly -->
>>>>>>>>>>> *<tr:subform>
>>>>>>>>>>> <tr:commandButton text="Add to cart" action="add2Cart"/>
>>>>>>>>>>> <input type="hidden" name="selectedBookId" value="#{book.bookId}"
>>>>>>>>>>> />
>>>>>>>>>>> </tr:subform>*
>>>>>>>>>>>
>>>>>>>>>>> </trh:cellFormat>
>>>>>>>>>>> </ui:repeat>
>>>>>>>>>>> <!--</tr:iterator>      -->
>>>>>>>>>>> </trh:rowLayout>
>>>>>>>>>>> </trh:tableLayout>
>>>>>>>>>>> </ui:define>
>>>>>>>>>>> </ui:composition>
>>>>>>>>>>>
>>>>>>>>>>> flow.xml
>>>>>>>>>>>
>>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>>> <flow xmlns="http://www.springframework.org/schema/webflow";
>>>>>>>>>>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>>>>    xsi:schemaLocation="
>>>>>>>>>>> http://www.springframework.org/schema/webflow
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd
>>>>>>>>>>> ">
>>>>>>>>>>>
>>>>>>>>>>> <persistence-context />
>>>>>>>>>>> <var name="cart" class="bookstore.domain.Cart" />
>>>>>>>>>>> <view-state id="home">
>>>>>>>>>>> <on-render>
>>>>>>>>>>> <evaluate expression="catalogService.getAllBooks()"
>>>>>>>>>>> result="viewScope.bestsellers"></evaluate>
>>>>>>>>>>> </on-render>
>>>>>>>>>>> <transition on="selectBook2SeeDetails" to="reviewBookDetails">
>>>>>>>>>>> <set name="flowScope.selectedBook"
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  
>>>>>>>>>>> value="catalogService.getBookById(requestParameters.selectedBookId)"
>>>>>>>>>>> />
>>>>>>>>>>> </transition>
>>>>>>>>>>> </view-state>
>>>>>>>>>>>
>>>>>>>>>>> <global-transitions>
>>>>>>>>>>> <transition on="add2Cart">
>>>>>>>>>>> <evaluate
>>>>>>>>>>> <!-- Maybe it would be better to use the bestsellers list of Book
>>>>>>>>>>> entities
>>>>>>>>>>> but then I guess the place of code that should iterate over the
>>>>>>>>>>> list
>>>>>>>>>>> to
>>>>>>>>>>> find
>>>>>>>>>>> the Book with the appropriate id would be good in a custom Action
>>>>>>>>>>> "bean"
>>>>>>>>>>> (correct me if I'm wrong) and I don't want to complicate this
>>>>>>>>>>> sample
>>>>>>>>>>> with
>>>>>>>>>>> that too.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  
>>>>>>>>>>> expression="cart.addItem(catalogService.getBookById(requestParameters.selectedBookId))">
>>>>>>>>>>> </evaluate>
>>>>>>>>>>> </transition>
>>>>>>>>>>> </global-transitions>
>>>>>>>>>>> </flow>
>>>>>>>>>>>
>>>>>>>>>>> When I click on the "Add to cart" button the post request will be
>>>>>>>>>>> something
>>>>>>>>>>> like this:
>>>>>>>>>>>
>>>>>>>>>>> _noJavaScript    false
>>>>>>>>>>> j_id5
>>>>>>>>>>> j_id17:rangeStart    0
>>>>>>>>>>> javax.faces.ViewState    H4sIAAAAAAAAA......
>>>>>>>>>>> org.apache.myfaces.trinidad.faces.FORM    mainForm
>>>>>>>>>>> *selectedBookId    1
>>>>>>>>>>> selectedBookId    2
>>>>>>>>>>> selectedBookId    3
>>>>>>>>>>> selectedBookId    4 *
>>>>>>>>>>> source    j_id31:0:j_id37:j_id38
>>>>>>>>>>> state
>>>>>>>>>>> value
>>>>>>>>>>>
>>>>>>>>>>> As it seems it's send a "String array" of selectedBookId . I'd
>>>>>>>>>>> like
>>>>>>>>>>> to
>>>>>>>>>>> send
>>>>>>>>>>> just the appropriate id of course. How could I reach that? On top
>>>>>>>>>>> of
>>>>>>>>>>> this
>>>>>>>>>>> I'd like to make more rows dynamically. You know 4 books in the
>>>>>>>>>>> first
>>>>>>>>>>> row
>>>>>>>>>>> than another 4 one etc, but I don't know how to write the repeat
>>>>>>>>>>> code
>>>>>>>>>>> to
>>>>>>>>>>> make this. Although, the main problem is the first one.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Thank you for your reply. I'm afraid you have misunderstood me. I'd
>>>>>>>>> like
>>>>>>>>> to
>>>>>>>>> create something you can see on amazon. There are book's pictures 3
>>>>>>>>> in
>>>>>>>>> a
>>>>>>>>> row, you can click on them to see details. I'd like to make a
>>>>>>>>> category
>>>>>>>>> panel
>>>>>>>>> and cart  panel you can see on that portal, but it's maybe an other
>>>>>>>>> topic.
>>>>>>>>> If I can reach that look easily with tr:table I'll use that for
>>>>>>>>> this,
>>>>>>>>> but
>>>>>>>>> I
>>>>>>>>> think the problem will come out again in an other scenario. Namely
>>>>>>>>> how
>>>>>>>>> to
>>>>>>>>> send parameters with tr:commandButton. I think a hidden input filed
>>>>>>>>> would
>>>>>>>>> be
>>>>>>>>> great for this, but in a separate form or something. Of course with
>>>>>>>>> an
>>>>>>>>> action listener in a backing bean all of my problems would fly
>>>>>>>>> away,
>>>>>>>>> but
>>>>>>>>> what is the purpose of SWF than?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>

Reply via email to