0

Spring MVCプロジェクトで作業していますが、ビュー内のモデルの文字列表現を変更する方法がわかりません。

WorkOrderモデルとONE_TO_MANYの関係にあるCustomerモデルがあります。workorders / show.jspxでは、顧客は、名前、電子メールアドレス、および電話番号を連結した文字列として表示されます。

これを変更するにはどうすればよいですか?CustomerのtoStringメソッドを変更するだけでよいと思いましたが、うまくいきませんでした。

4

2 に答える 2

1

1つの解決策は、show()をWorkOrderControllerに変更/プッシュインして、レンダリングされたビュータグを表示したいものにマップすることです。

@RequestMapping(value = "/{id}", produces = "text/html")
public String show(
    @PathVariable("id") Long id, 
    Model uiModel)
{
    final WorkOrder workOrder = WorkOrder.findWorkOrder(id);
    uiModel.addAttribute("workOrder", workOrder);
    uiModel.addAttribute("itemId", id);
    // Everything but this next line is just ripped out from the aspectJ/roo stuff.
    // Write a method that returns a formatted string for the customer name, 
    // and a customer accessor for WorkOrder.
    uiModel.addAttribute("customerDisplay", workOrder.getCustomer().getDisplayName());
    return "workorders/show";
}

customerDisplayのi18n/application.propertiesファイルにラベルを配置/定義します。

次に、show.jspxで、次のようなものを使用してマッピングにアクセスできます...(トリックは他のビューでも同様です)。

<field:display field="customerDisplay" id="s_your_package_path_model_WorkOrder_customerDisplay" object="${workorder}" z="user-managed" />

Rooは初めてなので、もっと良い答えが欲しいです。

于 2012-06-03T19:26:03.720 に答える
1

良い解決策を見つけました。ApplicationConversionServiceFactoryBean_Roo_ConversionService.ajのすべてのモデルにtoString()メソッドがあります

必要なモデルのメソッドをApplicationConversionServiceFactoryBean.javaにプッシュして、変更するだけです。私の場合、これを追加しました:

public Converter<Customer, String> getCustomerToStringConverter() {
    return new org.springframework.core.convert.converter.Converter<com.eg.egmedia.bizapp.model.Customer, java.lang.String>() {
        public String convert(Customer customer) {
            return new StringBuilder().append(customer.getId()).append(' ').append(customer.getFirstName()).append(' ').append(customer.getLastName()).toString();
        }
    };
}

Springはこれをすべてのビューページに使用するため、アプリ全体でモデルの文字列表現が変更されます。

于 2012-06-06T19:10:35.957 に答える