[CUBBY-224] アクション内でフォームオブジェクトにnullを設定してもリクエストパラメータが優先される Created: 2009-04-26  Updated: 2009-08-24  Resolved: 2009-05-01

Status: Closed
Project: Cubby
Component/s: None
Affects Version/s: 2.0.0-beta1
Fix Version/s: 2.0.0-beta2

Type: Bug Priority: Major
Reporter: agata Assignee: baba
Resolution: Fixed Votes: 0
Labels: None


 Description   

バリデーションエラーでない場合もリクエストパラメータから値を復元しようとしているのが問題。
以下のコメントアウトで期待する動作になるようです。

	public static Object formValue(final JspContext context,
			final String[] outputValues, final String name,
			final Integer index, final Object specifiedValue) {
		final Object value;

		if (isValidationFail(context)) {
			if (specifiedValue == null) {
				final Object[] values = paramValues(context, name);
				value = value(values, index);
			} else {
				final Object[] values = paramValues(context, name);
				if (values.length == 0) {
					value = specifiedValue;
				} else {
					value = value(values, index);
				}
			}
		} else {
			if (specifiedValue != null) {
				value = specifiedValue;
//			} else if (outputValues == null) {
//				final Object[] values = paramValues(context, name);
//				value = value(values, index);
			} else {
				value = value(outputValues, index);
			}
		}

		return value;
	}


 Comments   
Comment by baba [ 2009-05-01 ]

以下のような動作になります。

  • value が指定された場合はその値を出力
  • 指定がない場合は name 属性に対応するプロパティをフォームオブジェクトから取得して出力

バリデーションエラーがあった場合は、入力された値を復元します。

  • t:form タグに指定されたフォームオブジェクトが null の場合
  • t:input、t:textarea タグに指定された name 属性に対応するプロパティがフォームオブジェクトにない場合
    は、ログを出力します。
Comment by baba [ 2009-04-27 ]

コメントアウトの部分はフォームオブジェクトにフィールドがない場合に値を復元するための処理だと思います。
r1557 で対応をいれたので、確認してみてください。
SNAPSHOT もデプロイしています。

Generated at Wed Apr 24 15:44:17 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.