You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Leonhard Holzer <le...@abuscom.com> on 2007/08/01 14:54:55 UTC

[Tobago] parameter for detail links

Hello list,

I use spring webflow together with tobago 1.0.11 on java 1.4.
I have a sheet:

                            <tc:sheet 
value="#{tableSearchCriteria.tableList}"
                                columns="100px;70px;70px;70px;*" var="row">
                                <tc:column label="#{global.tableName}">
                                    <tc:out value="#{row}" />
                                </tc:column>
...
                                <tc:column label="#{global.actions}">
                                    <tc:form id="describeTableForm">
                                    <tc:button 
label="#{global.cmdDescribe}" action="describe" 
actionListener="#{tableSearchCriteria.test}">
                                        <tc:attribute name="testTable" 
value="test123"/>
                                        <f:param name="tableNameId" 
value="Test23"/>
                                    </tc:button>
                                    </tc:form>
                                </tc:column>
...
                            </tc:sheet>


but the parameter tableNameId is not transfered to the server.If I read 
all request parameters in the actionListener:

        FacesContext context = FacesContext.getCurrentInstance();
        Map map = context.getExternalContext().getRequestMap();
        Iterator iter = map.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String) iter.next();
            System.out.println("key: "+key+" -> "+map.get(key));
        }


The parameter tableNameId is not part of the parameters. does anyone 
have any suggestions?

regards
  Leo


Re: [Tobago] parameter for detail links

Posted by Leonhard Holzer <le...@abuscom.com>.
I realized the solution with the actionListener.


This are short snapshots of the solution:

I need the parameter as input parameter for a spring subflow with the 
following definition:
<subflow-state flow="describeTable-flow" id="describeTable">
        <attribute-mapper>
            <input-mapper>
                <mapping 
source="flowScope.tableSearchCriteria.selectedTable" 
target="tableNameId" from="string" to="string"/>
            </input-mapper>
        </attribute-mapper>
        <transition on="finish" to="displayTableList" />
 </subflow-state>

The action Listener saves the parameter in the selectedTable Property:
    public void selectTable(ActionEvent event) {
        Object param = 
((UIParameter)event.getComponent().getChildren().get(0)).getValue();
        selectedTable = (String) param;
    }


And the jsp page has the following structure:
                                <tc:column label="#{global.actions}">
                                    <tc:form id="describeTableForm">
                                    <tc:button 
label="#{global.cmdDescribe}" action="describe" 
actionListener="#{tableSearchCriteria.selectTable}">
                                        <f:param name="tableNameId" 
value="#{row}"/>
                                    </tc:button>
                                    </tc:form>
                                </tc:column>

Thanks for your help

regards
  Leo


Volker Weber schrieb:
> Hi Leonhard,
>
> you need the value of the parameter in your action?
>
> Implement your actionListener like this:
>
> public void test(ActionEvent event) {
>     String value =
> (String)ComponentUtil.findParameter(event.getComponent(),
> "tableNameId");
>
>   ...
>
> }
>
>
> Regards,
>     Volker
>
>
>
>
> 2007/8/1, Leonhard Holzer <le...@abuscom.com>:
>   
>> Hello list,
>>
>> I use spring webflow together with tobago 1.0.11 on java 1.4.
>> I have a sheet:
>>
>>                             <tc:sheet
>> value="#{tableSearchCriteria.tableList}"
>>                                 columns="100px;70px;70px;70px;*" var="row">
>>                                 <tc:column label="#{global.tableName}">
>>                                     <tc:out value="#{row}" />
>>                                 </tc:column>
>> ...
>>                                 <tc:column label="#{global.actions}">
>>                                     <tc:form id="describeTableForm">
>>                                     <tc:button
>> label="#{global.cmdDescribe}" action="describe"
>> actionListener="#{tableSearchCriteria.test}">
>>                                         <tc:attribute name="testTable"
>> value="test123"/>
>>                                         <f:param name="tableNameId"
>> value="Test23"/>
>>                                     </tc:button>
>>                                     </tc:form>
>>                                 </tc:column>
>> ...
>>                             </tc:sheet>
>>
>>
>> but the parameter tableNameId is not transfered to the server.If I read
>> all request parameters in the actionListener:
>>
>>         FacesContext context = FacesContext.getCurrentInstance();
>>         Map map = context.getExternalContext().getRequestMap();
>>         Iterator iter = map.keySet().iterator();
>>         while (iter.hasNext()) {
>>             String key = (String) iter.next();
>>             System.out.println("key: "+key+" -> "+map.get(key));
>>         }
>>
>>
>> The parameter tableNameId is not part of the parameters. does anyone
>> have any suggestions?
>>
>> regards
>>   Leo
>>
>>
>>     
>
>
>
>   


-- 
----------------------------------
 Leonhard Holzer
 ABusCom GmbH
 Kapuzinerplatz 9
 I 39031 Bruneck
 Tel.:  +39 0474 538 000
 Fax.:  +39 0474 538 000
 mobil: +39 335 83 28 041
 web:   www.abuscom.com
----------------------------------


Re: [Tobago] parameter for detail links

Posted by Volker Weber <v....@inexso.de>.
Hi Leonhard,

you need the value of the parameter in your action?

Implement your actionListener like this:

public void test(ActionEvent event) {
    String value =
(String)ComponentUtil.findParameter(event.getComponent(),
"tableNameId");

  ...

}


Regards,
    Volker




2007/8/1, Leonhard Holzer <le...@abuscom.com>:
> Hello list,
>
> I use spring webflow together with tobago 1.0.11 on java 1.4.
> I have a sheet:
>
>                             <tc:sheet
> value="#{tableSearchCriteria.tableList}"
>                                 columns="100px;70px;70px;70px;*" var="row">
>                                 <tc:column label="#{global.tableName}">
>                                     <tc:out value="#{row}" />
>                                 </tc:column>
> ...
>                                 <tc:column label="#{global.actions}">
>                                     <tc:form id="describeTableForm">
>                                     <tc:button
> label="#{global.cmdDescribe}" action="describe"
> actionListener="#{tableSearchCriteria.test}">
>                                         <tc:attribute name="testTable"
> value="test123"/>
>                                         <f:param name="tableNameId"
> value="Test23"/>
>                                     </tc:button>
>                                     </tc:form>
>                                 </tc:column>
> ...
>                             </tc:sheet>
>
>
> but the parameter tableNameId is not transfered to the server.If I read
> all request parameters in the actionListener:
>
>         FacesContext context = FacesContext.getCurrentInstance();
>         Map map = context.getExternalContext().getRequestMap();
>         Iterator iter = map.keySet().iterator();
>         while (iter.hasNext()) {
>             String key = (String) iter.next();
>             System.out.println("key: "+key+" -> "+map.get(key));
>         }
>
>
> The parameter tableNameId is not part of the parameters. does anyone
> have any suggestions?
>
> regards
>   Leo
>
>

Re: [Tobago] parameter for detail links

Posted by Zied Hamdi <ja...@gmail.com>.
Hi Volker,

I didn't know about that! does a session scoped bb hold old bindings, or why
shouldn't we use binding in that case?

Is it because of the tree view serialization when dormant?

I though binding is the best way to be in touch with the view and get user
entries efficiently...

Regards,
Zied

2007/8/1, Volker Weber <v....@inexso.de>:
>
> Hi,
>
> i suppose to don't use binding if you can avoid it. At least you
> should never use a binding pointing to a session scoped bean.
>
>
> Regards,
>    Volker
>
> 2007/8/1, Zied Hamdi <ja...@gmail.com>:
> > Hi Leo,
> >
> > You sould use one of these two
> >
> > 1. <tc:sheet binding="tableSearchCriteria.table"
> > 2. getApplication().createValueBinding( "#{" + yourID + "}" ).getValue(
> > getFacesContext() );
> >
> > If you are under jsf 1.2 you can use
> > getApplication().evaluateExpressionGet( getFacesContext(),
> > "#{" + el + "}", clazz ) for the second case.
> > In general it's not a good idea to access the tree through
> ServletRequest
> > parameters, JSF did all it can to hide this low level.
> >
> > Regards,
> > Zied
> >
> >
> > 2007/8/1, Leonhard Holzer <le...@abuscom.com>:
> > > Hello list,
> > >
> > > I use spring webflow together with tobago 1.0.11 on java 1.4.
> > > I have a sheet:
> > >
> > >                            <tc:sheet
> > > value="#{tableSearchCriteria.tableList}"
> > >
> > columns="100px;70px;70px;70px;*" var="row">
> > >                                <tc:column label="#{ global.tableName
> }">
> > >                                    <tc:out value="#{row}"
> > />
> > >                                </tc:column>
> > > ...
> > >                                <tc:column label="#{ global.actions}">
> > >                                    <tc:form
> > id="describeTableForm">
> > >                                    <tc:button
> > > label="#{global.cmdDescribe}" action="describe"
> > > actionListener="#{tableSearchCriteria.test}">
> > >                                        <tc:attribute
> > name="testTable"
> > > value="test123"/>
> > >                                        <f:param
> > name="tableNameId"
> > > value="Test23"/>
> > >                                    </tc:button>
> > >                                    </tc:form>
> > >                                </tc:column>
> > > ...
> > >                            </tc:sheet>
> > >
> > >
> > > but the parameter tableNameId is not transfered to the server.If I
> read
> > > all request parameters in the actionListener:
> > >
> > >        FacesContext context = FacesContext.getCurrentInstance();
> > >        Map map = context.getExternalContext().getRequestMap();
> > >        Iterator iter = map.keySet().iterator();
> > >        while (iter.hasNext()) {
> > >            String key = (String) iter.next();
> > >            System.out.println("key: "+key+" -> "+map.get(key));
> > >        }
> > >
> > >
> > > The parameter tableNameId is not part of the parameters. does anyone
> > > have any suggestions?
> > >
> > > regards
> > > Leo
> > >
> > >
> >
> >
> >
> > --
> > Zied Hamdi
> >  zatreex.sourceforge.net
>



-- 
Zied Hamdi
zatreex.sourceforge.net

Re: [Tobago] parameter for detail links

Posted by Volker Weber <v....@inexso.de>.
Hi,

i suppose to don't use binding if you can avoid it. At least you
should never use a binding pointing to a session scoped bean.


Regards,
    Volker

2007/8/1, Zied Hamdi <ja...@gmail.com>:
> Hi Leo,
>
> You sould use one of these two
>
> 1. <tc:sheet binding="tableSearchCriteria.table"
> 2. getApplication().createValueBinding( "#{" + yourID + "}" ).getValue(
> getFacesContext() );
>
> If you are under jsf 1.2 you can use
> getApplication().evaluateExpressionGet( getFacesContext(),
> "#{" + el + "}", clazz ) for the second case.
> In general it's not a good idea to access the tree through ServletRequest
> parameters, JSF did all it can to hide this low level.
>
> Regards,
> Zied
>
>
> 2007/8/1, Leonhard Holzer <le...@abuscom.com>:
> > Hello list,
> >
> > I use spring webflow together with tobago 1.0.11 on java 1.4.
> > I have a sheet:
> >
> >                            <tc:sheet
> > value="#{tableSearchCriteria.tableList}"
> >
> columns="100px;70px;70px;70px;*" var="row">
> >                                <tc:column label="#{ global.tableName}">
> >                                    <tc:out value="#{row}"
> />
> >                                </tc:column>
> > ...
> >                                <tc:column label="#{ global.actions}">
> >                                    <tc:form
> id="describeTableForm">
> >                                    <tc:button
> > label="#{global.cmdDescribe}" action="describe"
> > actionListener="#{tableSearchCriteria.test}">
> >                                        <tc:attribute
> name="testTable"
> > value="test123"/>
> >                                        <f:param
> name="tableNameId"
> > value="Test23"/>
> >                                    </tc:button>
> >                                    </tc:form>
> >                                </tc:column>
> > ...
> >                            </tc:sheet>
> >
> >
> > but the parameter tableNameId is not transfered to the server.If I read
> > all request parameters in the actionListener:
> >
> >        FacesContext context = FacesContext.getCurrentInstance();
> >        Map map = context.getExternalContext().getRequestMap();
> >        Iterator iter = map.keySet().iterator();
> >        while (iter.hasNext()) {
> >            String key = (String) iter.next();
> >            System.out.println("key: "+key+" -> "+map.get(key));
> >        }
> >
> >
> > The parameter tableNameId is not part of the parameters. does anyone
> > have any suggestions?
> >
> > regards
> > Leo
> >
> >
>
>
>
> --
> Zied Hamdi
>  zatreex.sourceforge.net

Re: [Tobago] parameter for detail links

Posted by Zied Hamdi <ja...@gmail.com>.
Hi Leo,

You sould use one of these two

1. <tc:sheet binding="tableSearchCriteria.table"
2. getApplication().createValueBinding( "#{" + yourID + "}" ).*getValue*(
getFacesContext() );

If you are under jsf 1.2 you can use getApplication().evaluateExpressionGet(
getFacesContext(), "#{" + el + "}", clazz ) for the second case.
In general it's not a good idea to access the tree through ServletRequest
parameters, JSF did all it can to hide this low level.

Regards,
Zied


2007/8/1, Leonhard Holzer <le...@abuscom.com>:
>
> Hello list,
>
> I use spring webflow together with tobago 1.0.11 on java 1.4.
> I have a sheet:
>
>                            <tc:sheet
> value="#{tableSearchCriteria.tableList}"
>                                columns="100px;70px;70px;70px;*" var="row">
>                                <tc:column label="#{global.tableName}">
>                                    <tc:out value="#{row}" />
>                                </tc:column>
> ...
>                                <tc:column label="#{global.actions}">
>                                    <tc:form id="describeTableForm">
>                                    <tc:button
> label="#{global.cmdDescribe}" action="describe"
> actionListener="#{tableSearchCriteria.test}">
>                                        <tc:attribute name="testTable"
> value="test123"/>
>                                        <f:param name="tableNameId"
> value="Test23"/>
>                                    </tc:button>
>                                    </tc:form>
>                                </tc:column>
> ...
>                            </tc:sheet>
>
>
> but the parameter tableNameId is not transfered to the server.If I read
> all request parameters in the actionListener:
>
>        FacesContext context = FacesContext.getCurrentInstance();
>        Map map = context.getExternalContext().getRequestMap();
>        Iterator iter = map.keySet().iterator();
>        while (iter.hasNext()) {
>            String key = (String) iter.next();
>            System.out.println("key: "+key+" -> "+map.get(key));
>        }
>
>
> The parameter tableNameId is not part of the parameters. does anyone
> have any suggestions?
>
> regards
> Leo
>
>


-- 
Zied Hamdi
zatreex.sourceforge.net