🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
3 messages
3 total messages Started by Jadalbert Tue, 22 Nov 2011 14:01
wymiana danych między bean'ami
#153153
Author: Jadalbert
Date: Tue, 22 Nov 2011 14:01
33 lines
2070 bytes
Próbuję (uczę się) na jednej stronie jsp korzystać 
z dwóch javabeans, przy czym ten drugi ma 
korzystać z wyników pierwszego.
Wygląda to mniej więcej tak:
<jsp:useBean id="area" scope="session" 
class="calculation.ringAreaBean"/>

<jsp:useBean id="tension" scope="session" 
class="calculation.tensionBean"/>

następnie "obliczam" wielkości z "area" i 
otrzymuję prawidłowe wyniki.
<h:outputText value="#{area.area}"/>

Kolejna linia to próba wyliczenia czegoś z 
"tension" do którego musi wejść wynik z "area".
<h:outputText value="#{tension.tension}"/>

I tu porażka. Błąd w wyliczeniu:
'#{tension.tension}' Error reading 'tension' on 
type calculation.tensionBean

Nie chcę tworzyć obiektów w faces-config.xml a 
chcę używać konstrukcji <jsp:useBean ...

W samym tensionBean.java jest metoda:
private ringAreaBean ra()
{HttpServletRequest request = (HttpServletRequest) 
FacesContext.getCurrentInstance().getExternalContext().getRequest();
   return (ringAreaBean) 
request.getSession().getAttribute("ringAreaBean");}

Co robię nie tak?
Re: wymiana danych między bean'ami
#153154
Author: Michal Kleczek
Date: Tue, 22 Nov 2011 14:52
47 lines
2159 bytes
On 2011-11-22 15:01, Jadalbert wrote:
> Próbuję (uczę się) na jednej stronie jsp korzystać z dwóch javabeans,
> przy czym ten drugi ma korzystać z wyników pierwszego.
> Wygląda to mniej więcej tak:
> <jsp:useBean id="area" scope="session" class="calculation.ringAreaBean"/>
>
> <jsp:useBean id="tension" scope="session" class="calculation.tensionBean"/>
>

1. Zwyczajowo nazwy klas to CamelCase
2. masz dwa beany: "area" i "tension" (odpowiednio klas ringAreaBean i 
tensionBean)

>
> W samym tensionBean.java jest metoda:
> private ringAreaBean ra()
> {HttpServletRequest request = (HttpServletRequest)
> FacesContext.getCurrentInstance().getExternalContext().getRequest();
> return (ringAreaBean) request.getSession().getAttribute("ringAreaBean");}

tutaj chcesz beana "ringAreaBean" - nie ma takiego.

A tak w ogole to lepiej na przyklad:

class TensionBean {
   private RingAreaBean area;

   public RingAreaBean getArea() {
     return area;
   }

   public double getTension() {
     //uzyj getArea() zeby obliczyc tension
   }
}

i w jsp:

<jsp:useBean id="tension" scope="session" class="calculation.tensionBean"/>

...

<h:outputText value="#{tension.area.area}"/>
<h:outputText value="#{tension.tension}"/>

-- 
Michal
Re: wymiana danych między bean'ami
#153155
Author: MaxZorin
Date: Tue, 22 Nov 2011 16:17
59 lines
2998 bytes
W dniu 2011-11-22 15:52, Michal Kleczek pisze:
> On 2011-11-22 15:01, Jadalbert wrote:
>> Próbuję (uczę się) na jednej stronie jsp korzystać z dwóch javabeans,
>> przy czym ten drugi ma korzystać z wyników pierwszego.
>> Wygląda to mniej więcej tak:
>> <jsp:useBean id="area" scope="session" class="calculation.ringAreaBean"/>
>>
>> <jsp:useBean id="tension" scope="session"
>> class="calculation.tensionBean"/>
>>
>
> 1. Zwyczajowo nazwy klas to CamelCase
Czyli jak pisać? RingArea czy ringArea, bo jakoś mi się wydaje, że 
widziałem, że zaczynamy od małej litery. To nie tak?
> 2. masz dwa beany: "area" i "tension" (odpowiednio klas ringAreaBean i
> tensionBean)
>
>>
>> W samym tensionBean.java jest metoda:
>> private ringAreaBean ra()
>> {HttpServletRequest request = (HttpServletRequest)
>> FacesContext.getCurrentInstance().getExternalContext().getRequest();
>> return (ringAreaBean) request.getSession().getAttribute("ringAreaBean");}
>
> tutaj chcesz beana "ringAreaBean" - nie ma takiego.

Cholera, cholera, cholera, cholera....!!!!!!!
Oczywiście, jak zawsze taki durny błąd!
Dziękuję za zauważenie, bo już wątpiłem w sens wszystkiego.

>
> A tak w ogole to lepiej na przyklad:
Tak, to rozumiem z tym, że w całym moim zamierzeniu to nie powinno tak 
działać bo do tego "tension" będzie przychodzić zupełnie różne "area", 
tak w ogólności. Zresztą jeszcze zobaczę.
>
> class TensionBean {
> private RingAreaBean area;
>
> public RingAreaBean getArea() {
> return area;
> }
>
> public double getTension() {
> //uzyj getArea() zeby obliczyc tension
> }
> }
>
> i w jsp:
>
> <jsp:useBean id="tension" scope="session" class="calculation.tensionBean"/>
>
> ...
>
> <h:outputText value="#{tension.area.area}"/>
> <h:outputText value="#{tension.tension}"/>
>

Dziękuję za pomoc!
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads