0

フォームにさまざまな文字列プロパティを含むオブジェクトがあります。

JSPフォームで印刷したいときは、

<c:out value="${form.company.address}" />

これは完全に機能します。

次に、HTML 入力フィールドを作成します。でも書くときは

<html:text property="company.address" />

というエラーが表示されます

Caused by: javax.servlet.jsp.JspException: No getter method for property company.address of bean org.apache.struts.taglib.html.BEAN

会社の住所で HTML 入力フィールドを作成する方法を知っていますか?

私のビーンには、必要な対応するゲッターとセッターがあります。

4

3 に答える 3

2

これを翻訳する正しい方法:

<c:out value="${UFForm.company.address}" />

Struts には、

<html:text name="UFForm" property="company.address">

これは、メソッド (オブジェクトを返すと想定している)UFFormを含む Bean を持つ名前のリクエストがあり、その代わりにゲッターがあることを意味します (私の言いたいことを理解している場合)。一言で言えば、 request/session の Beanである TagLib がアクセスしています。getCompany()CompanygetAddress()UFFormgetCompany().getAddress()

PS nullgetAddress()を返さないことを願っています。それ以外の場合は、例外がスローされます。<html:text />


編集上記で行ったことを説明するには:

public class Company implements Serializable {

    private String address;

    //Setter
    public void setAddress(String address) {
        this.address = address;
    }

    //Getter
    public String getAddress() { return this.address; }
}

public class UFForm implements Serializable {

    private Company company;

    public void setCompany(Company company) {
        this.company = company;
    }

    public void getCompany() {
        if (this.company == null) {
            setCompany(new Company());
        }

        return this.company;
    }
}

上記で行ったこと<html:text />は、

UFForm ufForm = ....;
String property = ufForm.getCompany().getAddress();
于 2010-09-16T20:40:17.557 に答える
0

テキスト ボックスの値を次のように取得する場合:

<html:text property="company.address" />

実際、あなたはStrutsに次のことをするように言っています:

formObject.getCompany().getAddress();

そのため、会社用の getter (null を返してはなりません。そうしないと、次の操作が失敗します) と会社オブジェクトのアドレス用の setter が必要です。セッター/ゲッターはパブリックである必要があります。エラーなしで次のことを実行できるため、これはすでに当てはまるはずです。

<c:out value="${UFForm.company.address}" />

さて、私を悩ませているのはこの部分です:${UFForm.. JSTL を使用すると、フォームに明示的にアクセスします。を使用する<html:text>と、フォームのプロパティに暗黙的にアクセスできます。この暗黙的な形式は、囲んでいる<html:form>タグによって提供されます。<html:text>中身はありますか<html:form>

フォーム Bean は、関連するフォーム Bean の仕様に基づいて配置/作成/公開されるActionMappingため、マッピングも確認してください。

于 2010-09-16T20:06:22.707 に答える
0

Bean には、対応するセッター メソッドとゲッター メソッドが必要です。

HTMLフォーム

<html:text property="name" size="10" maxlength="10">

対応豆。

public class AddressForm 
{
  private String name=null;

  public void setName(String name){
    this.name=name;
  }

  public String getName(){
    return this.name;
  }
}
于 2010-09-16T08:01:02.983 に答える