1

私は 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 のエントリは「テスト フレーズ」です。エラーメッセージは表示されず、問題を解決するためにできる限りのことを試しましたが、行き詰まりました。どんなフィードバックでも大歓迎です。

4

1 に答える 1