myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bart Kummel <bkum...@gmail.com>
Subject Re: [Trinidad] Trinidad, Facelets, multiple forms
Date Wed, 18 Nov 2009 09:33:18 GMT
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 <apreg@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<apreg@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<apreg@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?
>>>
>>>
>>>
>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message