<x:setColumn>

x:setColumn 動作用來設定直欄值。您可以明確指定哪個直欄、在哪一列、在哪個 Select,也可以採用這些選項預設值,如以下的 index、row 和 name 屬性所述。如果動作發生在 x:repeat 的主體內,這就尤其有用。

如果值設定在非現行列中,現行列的任何變更都會先套用至資料庫。 在動作之後,您在其中設定了值的列就會成為現行列。

您可以利用 x:column 動作來設定直欄值, 但這個動作只發生在 x:updateRowx:insertRow 的主體內, 而 x:setColumn 則可以在目標 DBSelect Bean 的範圍內的任何位置。

語法

<x:setColumn 	name = "target bean name"
			colName = "name"
			index = "number"
			row = "rowNumber"
			value = "value"
			nullToken = "string" />

x:setColumn 元素有下列屬性:

name
這是要設定直欄值的結果集所在之 DBSelect Bean 的名稱。這個值會區分大小寫,且必須符合在範圍內的 Select 動作。 除非動作(直接或間接)是在已指定了 name 屬性的 x:repeat 主體內,否則便需要這個屬性。在這個情況下,name 屬性的預設值是最接近的含括的 x:repeat 中所指定的相同值。
colName
直欄的名稱。 這個值會區分大小寫。 這個屬性是選用的。 它沒有預設值。 如果指定了 over="columns"x:repeat 主體內沒有這個動作,您就必須指出含有這個屬性或 index 屬性的直欄。同時明確指定兩者是錯誤的。
index
直欄的索引。 第一個直欄的索引是 1。 這個屬性是選用的。 如果指定了 over="columns"x:repeat 主體內有這個動作,屬性預設值就是 x:repeat 的索引變數值。如果沒有的話,您必須指出含有這個屬性或 colName 屬性的直欄。 同時明確指定兩者是錯誤的。
row
要設定直欄值的列號。 第一列的號碼是 1。 這個屬性是選用的。 如果沒有指定的話,預設值會隨著這個動作是否在指定了 over="rows"x:repeat 主體內而不同。如果是如此,就會使用該 x:repeat 的索引變數值。如果不是如此,就會使用結果集的現行列之索引。
value
直欄值。 您提供的值可以是能得出任何 Java™ 物件的表示式。這個屬性是必要的。

如果您提供的值是字串,這個動作會將它轉換成直欄的適當 Java 物件類型。輸入的大小寫會保留下來。如果值是任何其他種類的物件,它必須是該直欄的正確類型,否則會發生錯誤。

我們提供了兩個特殊值,您可以利用它來設定這個屬性:&empty 和 &null,它們分別代表空字串和空值物件參照。 指定 value="" 相當於指定 value="<%=2.23 nullObj %>",其中 nullObj 是空值物件參照。

nullToken
指定要當作資料庫空值來處理的字串值,會區分大小寫。 如果 value 屬性含有這個字串,在資料庫中,就會將直欄設為空值。

這個屬性是選用的。 如果您忽略它的話,就會使用相關的 x:select 動作之相同屬性的值。如果兩個位置都略過屬性的話,預設值就是 &empty。(&empty 是一個類似於 HTML 字元實體的特殊值,在這個屬性中,被識別為代表空字串。) 請參閱空值,以取得空值表示法的詳細資料。

註: 這個動作不會建立通往資料庫的連線。 您稍後必須執行 x:updateRow,它會連接、執行更新及切斷連線。您將無法離開這一列,直到您執行更新為止。
讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.