[Seasar-user:10570] Re: [Teeda] ValidatorChainの利用時のsetTargetの動作について
山下 真里
[E-MAIL ADDRESS DELETED]
2007年 9月 17日 (月) 15:53:35 JST
小林様
ご回答ありがとうございます。
山下真里です。
私のメールの内容が悪く、ご迷惑をおかけしております。
Teeda HTML Example の validator/dynamicValidator.htmlを
下記のようにした記述しました。
targetに指定されたボタンのみ(doEntryとdoExec)に対してのみ
バリデーションを有効にしたいと考えているのですが、
doAddに対してもバリデーションが有効になってしまいます。
やりたいこととしましては、setTargetを利用して、
押されたボタンによってValidatorの有無を切り替えたいと考えております。
私の環境では、テキストボックス(id="aaa")に 値(11)を入力し、
id="doAdd" のサブミットボタンを押すと、「値(id=aaa)が短すぎます。
5桁以上で入力してください。」と表示されます。
そこで、setTargetの値がValidatorChainを利用した場合、
適用されるのか、分らなく投稿させていただきました。
ご迷惑をおかけしますが、よろしくお願いいたします。
また、メールの件、大変ご迷惑をおかけしておりました。
Web メールを利用して投稿等をさせていただいておりましたが、
クライアントメーラーを利用し、今後、投稿をさせていただこうと
思っております。今まで、大変ご迷惑をおかけしました。
山下真里
=== dynamicValidator.html =============================================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Dynamic Validator</title>
<style>
.onTeedaError {
background-color: #FFCCCC;
}
</style>
</head>
<body>
<form id="validatorForm">
<div>
<span id="allMessages"></span>
</div>
<input type="text" id="aaa"/><br/><br/>
<input type="text" id="bbb"/><br/><br/>
<input type="submit" id="doAdd" value="add"/>
<input type="submit" id="doExec" value="execute"/>
<input type="submit" id="doEntry" value="entry" />
</form>
</body>
</html>
=== DynamicValidatorPage.java =========================================
package examples.teeda.web.validator;
import javax.faces.internal.ValidatorChain;
import javax.faces.validator.Validator;
import org.seasar.teeda.extension.validator.TLengthValidator;
import org.seasar.teeda.extension.validator.TRequiredValidator;
public class DynamicValidatorPage {
// これらは動的なValidatorが定義されている場合、無視される
public static final String aaa_TRequiredValidator = null;
public static final String aaa_TLengthValidator = "minimum = 1";
public static final String bbb_TRequiredValidator = null;
public static final String bbb_TLengthValidator = "minimum = 1";
private Integer aaa;
private Integer bbb;
public Validator getAaaValidator() {
return createValidator();
}
public Validator getBbbValidator() {
return createValidator();
}
protected Validator createValidator() {
ValidatorChain chain = new ValidatorChain();
TRequiredValidator tval = new TRequiredValidator();
tval.setTarget("doEntry,doExec");
chain.add(tval);
TLengthValidator lengthValidator = new TLengthValidator();
lengthValidator.setMinimum(5);
lengthValidator.setTarget("doEntry,doExec");
chain.add(lengthValidator);
return chain;
}
public void doExec() {
}
public Integer getAaa() {
return aaa;
}
public Integer getBbb() {
return bbb;
}
public void setAaa(Integer aaa) {
this.aaa = aaa;
}
public void setBbb(Integer bbb) {
this.bbb = bbb;
}
}
> 2 つめのボタンを追加して,DynamicValidatorPage で
> target を設定して試してみましたが,ちゃんと
> 効いているように見えます.
> # 1.0.10 および最新のトランクとも問題なし.
>
> target が有効にならないというのは,具体的に
> どういう状況でしょうか?
> target に指定されている doConfirme または
> doConfirm2 にバリデータが適用されないのでしょうか?
> それとも,doConfirme でも doConfirm2 でもない
> ボタンを押しても適用されてしまうのでしょうか?
>
> 可能なら Teeda HTML Example の dynamicValidator を
> ベースに再現するケースを作成して頂けると助かります.
>
>
> P.S.
> 以下を見てもらえると分かると思うのですが,
>
> http://ml.seasar.org/archives/seasar-user/2007-September/thread.html
>
> 山下さんの返信が常に新規スレッドになってしまっています.
> References: ヘッダが付いていないからなのですが,
> やり取りを追いかけるのがとても苦痛になってしまうので,
> できればちゃんと返信になるように (References: が
> 付くように) して頂けないでしょうか.
>
>
> --
> <signature>
> <name>Koichi Kobayashi</name>
> <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
> </signature>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
--
山下 真里 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内