Ich mache in JSF ein Projekt zur Schule und habe damit wenig Probleme.
Zunächst funktioniert der h: commandButton nicht richtig, wenn ich mich durch Drücken auf eine andere Seite des Projekts umleiten will. Es wurde ein Fehler angezeigt:
javax.el.PropertyNotWritableException: Unzulässige Syntax für Set Operation
index.jsp:
%Vor%ProducentBean.java:
%Vor%Ich habe versucht, es auf viele Arten zu tun, aber ich kann damit nicht umgehen.
Ich habe noch eine andere Frage: Gibt es in JSF eine Möglichkeit, eine Tabelle dynamisch aus der Datenbank anzuzeigen, z. B. indem Sie einen Tabellennamen auswählen und eine Option in? Meine Datenbank enthält drei Tabellen mit unterschiedlicher Anzahl von Spalten.
Ich werde sehr glücklich sein, wenn mir jemand Ratschläge gibt.
BEARBEITEN:
OK, ich habe das versucht:
%Vor%und in index.jsp:
%Vor%Es gibt mir immer noch den gleichen Fehler.
Stapelverfolgung:
%Vor%Sehen Sie sich den Stack-Trace an. Hier ist der wichtigste Teil:
%Vor% Lesen Sie von unten nach oben. Während der Aktualisierung der Modellwertephase durchläuft JSF den Komponentenbaum beginnend mit UIViewRoot
component ( <f:view>
). In einer UIForm
-Komponente ( <h:form>
) gibt es eine UIData
-Komponente ( <h:dataTable>
) mit einer UIInput
-Komponente ( <h:inputText>
), die verarbeitet werden muss. Der updateModel()
muss den übergebenen, konvertierten und validierten Wert im Grunde in das Modell (die gemanagte Bean) schreiben. Diese Operation ist jedoch fehlgeschlagen, da die Eigenschaft nicht beschreibbar ist (d. H. Die Setter-Methode kann nicht anhand der EL-Ausdruckssyntax gefunden werden).
Nun, schauen wir uns die Eigenschaften Ihrer <h:inputText>
Komponenten im Allgemeinen an.
Warte, das ist seltsam. Sie beginnen alle mit "bekommen"! Das ist definitiv nicht normal. JSF sucht dann nach Methoden wie setGetId()
, setGetNazwa()
, usw., die einfach keinen Sinn ergeben (und Sie haben wahrscheinlich auch nicht, angesichts dieser Ausnahme). Es wird erwartet, dass sie konkrete Eigenschaftsnamen wie "id", "nazwa", "nip" usw. und nicht vollständige Methodennamen darstellen.
Also, so im Modell:
%Vor%Und so in der Ansicht:
%Vor%Dies ist jedoch bereits in einem bisschen vernünftigen JSF Buch / Tutorial / Ressource abgedeckt. Bist du absolut sicher, dass du den richtigen gelesen hast? Ihre Frage zeigt auch, dass Sie JSF 2.0 in Kombination mit der veralteten JSP-Ansichtstechnologie anstelle der Nachfolger-Facelets verwenden. Beginnen Sie bei unserer JSF Wiki-Seite .
Sie haben hier einige Probleme. Erstens haben Sie in Ihren Eingabekomponenten Werte wie p.getId
. In Ihrer Bean haben Sie wahrscheinlich Methoden namens getId
und setId
, aber das bedeutet, dass Sie eine Eigenschaft namens id
haben, die Sie lesen und schreiben können. Ändern Sie Ihre Werte in: p.id
, p.nazwa
, p.nip
... Sie können sehen, dass ich alle unteren Buchstaben verwende, nicht ID , sondern id .
Zweitens sollten Sie Ihre Aktionsmethode auf etwas wie diese ändern (wenn Sie umleiten möchten):
%Vor%und Befehlstaste für etwas wie folgt:
%Vor%Tags und Links jsf