0

既存の xPage にフィールドを追加したいのですが、有効性を確認するためにいくつかの xPage の基礎を実行する必要があります。

私は次のことをしました:

  • 私の開発サイトと製品サイトが機能することを確認するために、ドキュメントがバインドされているフォームが計算されます (データソースは差分データベースに存在するため)。
  • 私の新しいフィールドは「NewField」と呼ばれ、単純なデータ バインディングを使用し、document1 (ドキュメントの残りのフィールドと同じ) を選択し、新しいフィールド名を入力しました (ドロップダウンからドキュメントとして選択することはできません)。計算されます)。
  • 実際のメモ ドキュメントにもフィールドを作成しましたが、これを行う必要はないと思いましたか? また、計算されたサブフォーム上にあるので、これが関連しているかどうかわかりませんか? これは、既存のメモ フォームの xpage バージョンです。このアプリケーションには、クライアント アクセスと Web アクセスの両方が適用されます。
  • 「バインド先」で指定されたフィールドが欠落している場合は作成されると思いましたが、メモフォームにある場合でも、値は保存されません。

何がうまくいかなかったのですか:

  • ドキュメントにフィールドが作成されますが、値が入力されていません。ノート ドキュメントに対して保存される値は空の文字列です。
  • ここには複雑なことは何もありません。ファンキーなことは何もしていませんが、値はマッピングされていませんか?
  • 残りのフィールド (最初のドキュメントを作成したときに作成されたもの) は正しくマップされています。

助言がありますか?これは、既存の xPage にフィールドを追加する際の初歩的なエラーですか?

リクエストに応じて、データ バインディングと機能するフィールドと機能しないフィールドの両方のコードを次に示します。


これがdocument1を定義する最初のコードです。保存後にエージェントを呼び出しますが、このエージェントは割り当てられていないフィールド値に対して何もしません。

<xp:this.data>
 <xp:dominoDocument var="document1" action="openDocument">
  <xp:this.databaseName><![CDATA[#{javascript:var sname = ("","test\\testdb.nsf"); 
    return sname;}]]>
  </xp:this.databaseName>
  <xp:this.formName><![CDATA[#{javascript:return "MainForm"}]]>
  </xp:this.formName>
 <xp:this.postSaveDocument>
  <xp:executeScript>
   <xp:this.script><![CDATA[#{javascript:var sname = @Name([CN]",@Subset(@DbName(),1));
      var dbname = "test/testdb.nsf";
      var dbTest:NotesDatabase = session.getDatabase(sname, dbname);
      if (dbTest.isOpen()){
        ag = dbTest.getAgent("UpdateDoc"); 
        noteid = document1.getDocument().getNoteID(); 
        ag.run(noteid); 
          } }]]></xp:this.script>
   </xp:executeScript>
  </xp:this.postSaveDocument></xp:dominoDocument>
</xp:this.data>

次に、機能していないフィールド割り当てのコードを次に示します。

<xp:inputText value="#{document1.NewField}"
  id="inputText25" disableClientSideValidation="true" styleClass="entryboxes">
</xp:inputText>

次に、機能しているフィールド割り当てのコードを次に示します。

<xp:inputText value="#{document1.CLRef}"
  id="inputText4" rendered="#{javascript:@IsNewDoc()}" styleClass="entryboxes">
</xp:inputText>

これはかなり標準的だと思いました。


8/10更新

だから - これは、条件付きでセルを非表示にしている場合にのみ発生することがわかりました。これには基本的な式があり、別のフィールドの値に基づいて行が表示されるように要求します。表示/非表示機能は機能していますが (コードについては以下を参照)、理由はわかりませんが、値が保存されません。

var hw = getComponent("module");
var hwv = hw2.getSubmittedValue();

hwv == "Product1" || hwv == "Product2" || hw2v == "Product3"

非表示ではない他のフィールドを作成すると(そしてフィールド名を構成すると)、ドキュメントに正しくマップされます(そうあるべきだと思いました)。良いニュースは、私は新しいフォームで複製することができたので、フォームの問題ではなく、条件付きで行を非表示にしたいと思っているようです? 何か案は?

4

1 に答える 1

0

OK - セルが特定の条件で非表示になっていると、フィールド マッピングに引き続き問題がありました。そのため、最終的にセルを表示し、特定の状況でのみフィールドを必須にしました。したがって、質問は回答ではなく、回避策が使用されます。

于 2012-10-22T01:12:20.387 に答える