8.5.3 UP1を使用しています。私は、 "hide/whens"またはもっと正確にxpages "show/ifs"に使用しているSSJSスクリプトライブラリに問題があります。いずれにしても、グローバル変数は、スクリプトライブラリを最後に保存したときの値をとっているようです。彼らはドキュメントの現在の値に基づいて計算していないようです。これは知られていることです(明らかに私には知られていません)。ここでは、問題を実証するサンプル・ページとスクリプトライブラリです:SSJSスクリプトライブラリのグローバル変数が正常に動作しない
例のXPage:
<xp:this.resources>
<xp:script src="/ssjsVisTest.jss" clientSide="false"></xp:script>
</xp:this.resources>
<xp:inputText id="inputText1" value="#{document1.StatusTX}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Save" id="SaveBtn">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:label id="label1" value="Status is Draft"
rendered="#{javascript:statusVisibleDraft()}">
</xp:label>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:label id="label2" value="Status is Pending"
rendered="#{javascript:statusVisiblePending()}">
</xp:label>
<xp:br></xp:br>
<xp:br></xp:br>
</xp:view>
サンプルSSJSスクリプトライブラリ:
var status = document1.getItemValueString('StatusTX');
function statusVisibleDraft() {
x = (status == "Draft") ? 1 : 0;
if(x > 0) {
return true;
} else {
return false;
}
}
function statusVisiblePending() {
x = (status == "Pending") ? 1 : 0;
if(x > 0) {
return true;
} else {
return false;
}
}
任意のアイデア?ありがとう
残念ながら、私が扱っているhide/whenは単純にフィールドx = value xよりもはるかに複雑です。私は例でそれを使用していました。彼らは通常、評価するために3つまたは4つの異なる条件を有する。私は、おそらくviewScope変数は行く方法だと思います。情報をありがとう。 –
Dan、この場合はhideWhenの結果と他のビジネスロジックを提供するバッキングBeanの使用を強くお勧めします。 viewScopeマネージドBeanを使用してBean内にドキュメントを格納しない場合は、注意してください。 [FieldName]を取得し、[FieldName]プロパティとload(unid)を設定し、save()関数(unidが新しいドキュメントに入力されなかった場合)とsetDBURL()を使用して現在のデータベースをデフォルト値に上書きすることができます。 – stwissel