0

私は見ようとしましたが、それはばかげています。

Glassfish 3.1.1、
JSF バージョン 2
、および netbeans 7.0.1 を 実行しています。

そして、以下はまったく機能しません。

< html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core">

切り取った

< c:remove var="test" scope="session"/>

私はそれが何かばかげているに違いないことを知っています、これはnetbeansが言い続けていることです:

コンポーネント ライブラリ Jstl Core にコンポーネントが含まれていません

そして、私がチェックしたすべてのJSTLタグライブラリで、そうです!


デフォルトのオブジェクト インスタンスでエディタ テンプレートを使用する方法

私のビューファイルには、現在次のコードがあります。

    @if ((Model.CustomerOrderTrackings != null) && (Model.CustomerOrderTrackings.Count > 0)) {
        for (int i = 0; i < Model.CustomerOrderTrackings.Count; i++) {
            @Html.EditorFor(m => m.CustomerOrderTrackings[i])
        }
    } else {
        @*The problem is here*@
        @Html.EditorFor(m => new CustomerOrderTracking())
    }

次に、私のエディター テンプレートは次のようになります。

@model Models.CustomerOrderTracking

<tr class="gridrow">
    <td class="carrierName">
        @Html.HiddenFor(m => m.Id, new { id = "" })
        @Html.HiddenFor(m => m.ShipperId, new { id = "", @class = "trackingShipperId" })
        @Html.DropDownListFor(m => m.CarrierName, ViewExtensions.ToFriendlySelectList<CustomerOrderTracking.CarrierNames>(Model.CarrierName), new { id = "" })
    </td>
    <td class="service">@Html.DropDownListFor(m => m.ShippingType, ViewExtensions.ToFriendlySelectList<CustomerOrderTracking.ShippingTypes>(Model.ShippingType), new { id = "" })</td>
    <td class="trackingNumber">@Html.TextBoxFor(m => m.ShippingTrackingNumber, new { @class = "trackingInput", id = "" }) <a href="" target="_blank" class="icon track"></a></td>
    <td class="shippingCost">
        @Html.TextBoxFor(m => m.ShippingCost, new { @class = "shippingInput", id = "" })
        <div onclick="Operations.Orders.DeleteTrackingRow(this)" class="icon delete deleteTracking" title="Delete this shipment?"></div>
    </td>
</tr>

私がやろうとしているのは、現在オブジェクトにアイテムが添付されていない場合に備えて、このテーブルにデフォルトの行を追加することです。次のエラーが発生するため、オブジェクトの新しいインスタンスが機能していません。Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

入力を手作業でコーディングすることもできますが、手作業でコーディングした入力を使用し、ASP.NET MVC 拡張機能から自動生成された入力を使用するため、私のコードはかなりずさんです。

オブジェクトのデフォルト インスタンスをエディタ テンプレートに渡す方法はありますか?

4

1 に答える 1

1

<c:remove>、元はレガシー JSP ビュー テクノロジのJSTLライブラリに含まれています。JSP の後継であるFaceletsでは、JSTL タグのサブセットのみが再定義されています (JSP タグは Facelets では機能せず、移植/書き換えられています)。その<c:remove>中にはありません。

あなたの具体的な問題は、別の方法で解決する必要があります。具体的な機能要件が不明なので、詳しくお答えできません。しかし、実際には JSFまたは CDI Bean が必要で、そこに必要なプロパティを格納していると思います。その後、ビュー スコープまたは会話スコープが終了すると削除されます。これらのスコープは明確に定義されており、リクエスト スコープとセッション スコープの間にあります。適切な Bean スコープを選択する方法も参照してください。@ViewScoped@ConversationScoped

于 2012-05-14T15:57:02.073 に答える