私は JSF/EJB を学んでいますが、問題に遭遇しました。
ユーザーから文字列を取得し、その文字列をデータベースに格納するコードを作成しようとしています。
これが私のコードです: エンティティ Bean:
@Entity
public class TestTable implements Serializable {
private static final long serialVersionUID = 1L;
public TestTable() {
super();
}
@Id
@GeneratedValue
private int firstcolumn;
private String secondcolumn;
private String testphrase = "test phrase";
public String getTestphrase() {
return testphrase;
}
public void setTestphrase(String testphrase) {
this.testphrase = testphrase;
}
public int getFirstcolumn() {
return firstcolumn;
}
public void setFirstcolumn(int firstcolumn) {
this.firstcolumn = firstcolumn;
}
public String getSecondcolumn() {
return secondcolumn;
}
public void setSecondcolumn(String secondcolumn) {
this.secondcolumn = secondcolumn;
}
}
- テーブルには 3 つの列があり、最初の列は主キー、2 番目の列にはユーザーが入力した文字列が格納され、3 番目の列には「テスト フレーズ」が格納されます。
コントローラー Bean:
@Named
public class TestController implements Serializable {
private static final long serialVersionUID = 1L;
@EJB
DataAccess dacc;
@Inject
TestTable testTable;
public TestController()
{
}
public TestTable getTestTable() {
return testTable;
}
public void setTestTable(TestTable testTable) {
this.testTable = testTable;
}
public void test()
{
System.out.println("string secondcolumn= "+ testTable.getSecondcolumn());
dacc.addtodb(testTable);
}
}
- System.out.println("string secondcolumn= "+ testTable.getSecondcolumn()); を使用しました。メソッド test() で、データベースに書き込まれる前にデータをチェックします。私の問題は、常に null です。コンソールの出力: INFO :string secondcolumn= null .
secondcolumn は、JSF の値バインディング式によって設定されません。
さて、JSF:
<h:outputText value="Second column:">
</h:outputText>
<h:inputText label="Second column" value="#{testController.testTable.secondcolumn}">
</h:inputText>
<h:outputText value="#{testController.testTable.getTestphrase()}">
</h:outputText>
<h:commandButton action="#{testController.test}" value="Save">
</h:commandButton>
データベースを確認すると、行が追加されています。列 SECONDCOLUMN のエントリは NULL です。
TESTPHRASE のエントリは「テスト フレーズ」です。エラーメッセージは表示されず、問題を解決するためにできる限りのことを試しましたが、行き詰まりました。どんなフィードバックでも大歓迎です。