JSF c:set Bewertung
<c:set var="product" value="#{productDAO.findByCode('code')}" />
#{product.name}
#{product.name}
Ich möchte zum abrufen eines Objekts aus der DB und Speicher Sie in eine variable einmal.
Allerdings finde ich den call auf die DB gemacht wird, jedesmal, wenn ich access-Produkt.
Im obigen Beispiel gibt es zwei Aufrufe der DB.
- Sollten Sie nicht aufrufen Modell aus Ihrer Sicht.
- Das ist nicht sehr hilfreich.
- Irgendeinen Grund, warum das Modell kann nicht das Feuer DAO-code, und legen den bean als View-scoped? Ich bin mir sicher, dass
#{product.name}
arbeiten würde, dann richtig. - Verwandte: stackoverflow.com/q/16268940/1065197. Durch die Art und Weise, JSF, Sie nicht haben, um eine variable mit JSTL + EL, das wird nur dazu führen, dass andere Probleme, da
#{product.name}
kann nicht festgelegt werden, da nichts es definiert einen verzögerten Auswertung Ausdruck. Siehe StackOverflow EL wiki und JSTL in Facelets-JSF2... macht Sinn, oder? - Sie verstehen unwirksam JSF-MVC-Struktur gut. stackoverflow.com/questions/10111387/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie explizit den Gültigkeitsbereich.
Den richtigen Ansatz, jedoch ist die erstellen und verwenden eines request-scoped managed bean und stellen diese Logik in Ihrer
@PostConstruct
.scope
attrproduct
geht inPage
Umfang. Wie funktioniert die Einstellung derscope
zurequest
ändern, das aktuelle Verhalten? Bitte helfen Sie, zu verstehen."I find the call to the DB is made everytime I access product."
none
Umfang und dann die<c:set>
fungiert lediglich als "alias". Die zugrunde liegende EL-Ausdruck wird dann noch ausgewertet, jedesmal, wenn die variable, auf die verwiesen wird. Führen Sie einen debugger, um zu sehen, es selber.