• 締切済み

【validation.xml】長さの入力チェック

いつもお世話になっております。 validation.xmlを使用しての長さ入力チェックについてご教授ください。 validation.xmlで、下記の指定をした場合、文字列の長さが100でチェックがかかりますが(半角でも全角でも)、 文字数ではなくバイトでチェックをかける方法はどのように記述すればよろしいでしょうか? <form name="TestForm">  <field property="freearea" depends="maxlength">   <arg0 key="フリーエリア" resource="false"/>   <arg1 key="${var:maxlength}" resource="false"/>   <var>    <var-name>maxlength</var-name>    <var-value>100</var-value>   </var>  </field> </form>

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • ssm3u
  • ベストアンサー率52% (19/36)
回答No.1

validator の maxlength は文字数制限です。 バイト数制限をかける必要がある場合は、 Validatorルールの自作を行う必要があります。 バイト数 Validatorルールの自作 あたりで検索すれば、 サンプルコードも見つかると思いますよ。

u_witch
質問者

お礼

ご回答ありがとうございます。 やはり、自作するしかないんですね。 頑張ってみます。

関連するQ&A

  • Strutsでの入力データチェック「validwhen」について

    StrutsのValidatorでフォームデータの入力チェックを行いたいのですが、validwhenバリデータが上手く動作しません。 サンプルを捜し求めてネット上をさ迷ったのですが、なかなか良いサンプルが見つからずに行き詰まってしまいました。 (OR条件、NOT NULLチェックのサンプルばかりでした…) 良いサンプルサイト/ここの記述が間違っているから動かないんだなど是非是非ご教示下さいませ。 【前提】 他の入力チェック(depends="maxLength"、depends="mask"など)は有効です。 なので設定ミス(?)ではありません。 【実現したい動作】 メモ(memo/テキストエリア)が200文字を超えていたらエラー。 ただし、削除フラグ(del_flg/チェックボックス)にチェックが入っていたら、200文字を超えていてもエラーを返さない。 【記述内容】 ■validation.xml <form name="myForm"> <field property="memo" depends="validwhen"> <msg name="memoerr" key="error.memoerr"/> <arg0 key="Form.memo"/> <var> <var-name>test</var-name> <var-value>(*this*.length > 200) and (del_flg.cecked == false)</var-value> </var> </field> </form> ■message.properties error.memoerr={0}は200字以下で入力して下さい。 Form.memo=メモ ■memo.jsp <%@ page contentType="text/html;charset=Windows-31J" language="java" %> <html:html locale="true"> <head><title>memo</title></head> <body> <html:form action="/ActionMemo"> メモ:<br> <textarea name="memo" cols="100" rows="2"></textarea><br> 削除:<html:checkbox property="del_flg" /><br> <html:submit value="送信"/> </html:form> </body> </html:html>

  • No such validation エラー

    struts validator にて検証チェックを行いたく作成をしましたが、上記のエラーが出てしまいました。 エラーは以下のようになっています  org.apache.commons.validator.ValidatorException: No such validation method: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest) at org.apache.commons.validator.ValidatorAction.loadValidationMethod ちなみにstrutsconfigは以下の通りとなっております。  <form-beans> <form-bean name="userRegistForm" type="blog.userRegistForm"> <form-property name="login_name" type="java.lang.String"/> <form-property name="nick_name" type="java.lang.String"/> <form-property name="email" type="java.lang.String"/> </form-bean> </form-beans> <action-mappings> <action path="/userRegist" type="blog.userRegistAction" name= "userRegistForm" input="/userRegist.jsp" scope="session" validate="true"> <forward name="success" path="/register_2.jsp" /> </action> jspの画面からlogin_name、nick_name、emailの入力欄を空欄のまま登録ボタンを押すと、userRegistFormに値がセットされた後、blog.userRegistAction.doに画面が遷移します(なにも表示されません)  また、validation.xmlは以下の通りとなっております。  ~中略~  <form-validation> <formset> <form name="userRegistForm"> <field property="login_name" depends="required"> <msg name="required" key="errors.empty" /> <arg name="required" key="string.login_name" position="0"/> </field> <field property="nick_name" depends="required"> <msg name="required" key="errors.empty"/> <arg name="required" key="string.nick_name" position="0"/> </field> <field property="email" depends="required,email"> <msg name="required" key="errors.empty"/> <arg name="required" key="string.email" position="0"/> <msg name="email" key="errors.email"/> <arg name="email" key="item.id" position="0"/> </field> </form> </formset> </form-validation>  また、userRegistFormは以下の通りとなっております。  private String login_name; private String nick_name; private String email; public userRegistForm() { login_name=null; nick_name=null; email=null; } public String getLogin_name() { return login_name; } public void setLogin_name(String loginName) { login_name = loginName; } public String getNick_name() { return nick_name; } public void setNick_name(String nickName) { nick_name = nickName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; となっておりますが、エラーの原因がよくわかりません。 ご教授の程よろしくお願い申し上げます。

  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

  • checkbox の入力チェックのやり方について

    お世話になります。 フォームにて、 javascriptで、入力チェックをおこないたいと思っています。 チェックボックスについては、どれか選択が一つでもなければ、アラートで、文字を出したいと思いますが、うまくできません。 チェックボックスの入力確認の方法を教えてください。 よろしくお願いいたします。 現在作りかけのソースは、下記の通りです。 <html> <head><title>-</title></head> <body> <form method="post" action="" onsubmit="return form_Validator(this)"> <input type="text" name="a1" size="15" maxlength="12"> <BR> <input type="checkbox" name="a1001" value="1"> <input type="checkbox" name="a1002" value="1"> <input type="submit" value="登録" name="submit"> </form> <script Language="JavaScript"> <!-- function form_Validator(doc) { if ( doc.a1.value == "" ) { alert( "BAD" ); return false; } /* a1001かa1002のチェックボックスのチェックがなければアラート----*/ return (true); } //--> </script> </body> </html>

  • 値をチェックしたい

    まったくの初心者で困っています。 それぞれ二つのテキストに、 1.空文字不可。全角かな文字以外は不可 2.空文字不可。数字と少数点以外は不可(全角の数字でも可) をつくりたいのですが、うまく作動しません。 実際のソースです↓ function check_null(){ var i; var tex = document.SForm.name.value; var tex1 = document.SForm.kukan.value; if(tex.length == 0||tex1.lenght == 0){ alert("入力されていません"); return false; }else if(tex ===" " || tex1 ===" " || tex ===" " || tex1 ===" "){ alert("スペースが入っています"); return false; }else{ return true; } } function checkHankaku(keyCode) { var a = keyCode; if(((a < 48) || (a > 57)) && a != 44 && a != 46 && a != 8){ alert("距離に数値以外の値が入っています"); return false; } } <html:form action="Addition.do" method="post" onsubmit="return check_null()"> <html:text maxlength="10" property="name" size="20"/><br> <html:text maxlength="5" property="kukan" size="10" onkeydown="checkHankaku(event.keyCode)"/><br> <html:submit value="送信"/> また、全角かなチェックのほうは、どうすればいいかもわからない状態なので、 何か良い方法がありましたらお願いします。

  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • JavaScriptにて動的に配列を作成して、POSTで渡したい

    独学でJavaScriptの勉強をしているものです。 勉強用に作っているサイトにて、どうしてもやり方がわからないことがあるので、教えて下さい。 以下のようなフォームがあったとします。 <form name="testForm1"> <input type="hidden" name="id" value="1" /> <input type="checkbox" name="check" /> </form> このフォームは動的に複数作成され、idのvalueはフォームごとに別の値が入ります。 それで行いたいことは、複数あるtestForm1から、チェックボックスにチェックが付いているidだけを取得して、別のページにPOSTで渡したいんです。 以下のようなスクリプトを書いたのですが、思うように動作してくれませんでした。 <form action="hoge" name="testForm2" method="post"> <input type="hidden" name="id" /> </form> function func() { var idArray = new Array(); for ( count = 0; count < document.testForm1.length; count++ ) { if ( document.testForm1.check.checked == true ) { idArray.push( document.testForm.id.value ); } } document.testForm2.id.value=idArray; document.testForm2.submit(); } JavaScriptに関しては独学で必要に応じて勉強している感じで、あまり基礎がわかっておらず、もしかしたらかなり的外れな質問になってしまっているかもしれませんが、どうか宜しくお願い致します。

  • メールフォームの入力チェックが動きません

    前任者が制作したメールフォームの入力チェックが動かないということで、 修正をしてみたのですが、思うように動いてくれません。 javascriptで作成されていて、 テキストフォームとプルダウンのチェックまでは未入力だと、 アラートが出てくるのですが、 最後の同意のチェックボックスの未チェックはスルーされてしまいます。 問題のjavascriptは下記になります。 ----------------------------------------------------------------- var mndFileds=new Array('Company','Last Name','Email','Phone','LEADCF3','Description'); var fldLangVal=new Array('会社名','お名前','メールアドレス','お電話番号','お問い合せ種別','お問い合せ内容'); function checkMandatery(){ for(i=0;i<mndFileds.length;i++){ var fieldObj=document.forms['name1'][mndFileds[i]]; if((fieldObj) && ((fieldObj.value).replace(/^\s+|\s+$/g, '')).length==0){ alert(fldLangVal[i] +' を入力してください。'); fieldObj.focus(); return false; }else if(fieldObj && (fieldObj.nodeName=='SELECT') && (fieldObj.options[fieldObj.selectedIndex].value=='-None-')){ alert(fldLangVal[i] +' を入力してください。'); fieldObj.focus(); return false; }else if(document.forms['name1'].acceptance.checked){ alert('にチェックをしてください。'); return false; } } } ----------------------------------------------------------------- メールフォームのhtmlは以下になります。 ----------------------------------------------------------------- <form action='' name='name1' method='POST' onSubmit='javascript:document.charset="UTF-8"; return checkMandatery()' accept-charset='UTF-8'> <p>会社名(必須):<input name='Company' type='text' size="30" maxlength='100'/></p> <p>お名前(必須):<input name='Last Name' type='text' size="30" maxlength='80' /></p> <p>メールアドレス(必須):<input name="Email"></p> <p>お電話番号(必須):<input name='Phone' type='text' size="30" maxlength='30' /></p> <p>Webサイト:<input name='Website' type='text' size="40" maxlength='120' value="http://" /></p> <p>お問い合せ種別(必須): <select name='LEADCF3'> <option value='-None-'>–なし–</option> <option value='種別1'>種別1</option> <option value='種別2'>種別2</option> <option value='種別3'>種別3</option> </select></p> <p>お問い合せ内容(必須):<textarea name='Description' cols="40" width='250' height='250'></textarea></p> <p><input type="checkbox" name="acceptance" value="1" class="wpcf7-acceptance" />同意する</p> <p><input type="image" src="btn_send_contact.jpg" alt="送信する" name='save' /> <input type="image" onClick="this.form.reset();return false" src="btn_reset_contact.jpg" alt="リセットする" name='reset' /></p> </form> ----------------------------------------------------------------- 私自身javascriptに関してはあまり知識がなく、 手さぐりでこんな感じかな?と思っていろいろ試したり、調べてみましたが、 いい方法が思いつきませんでした。 詳しい方、ぜひご回答をお願いいたします。

  • 入力文字チェックについて

    JavaScript初心者です。よろしくお願いします。入力された文字のチェックを行いたいと考えています。図面名を入力して、登録ボタンを押すと採番されるシステムで、1つだけ採番が可能なものと最大50個迄一括で採番が出来るものと2つあります。1つだけ採番であれば、下記にある通りで問題はないのですが、50個迄一括で採番する方ではエラーが表示されます。 エラー;'document.iform.zumen_mei.value'はNullまたはオブジェクトではありません。 入力文字チェック <SCRIPT language="JavaScript"> <!-- function zumenmeicheck() { var str = document.iform.zumen_mei.value; if( str.match( /[,,~1-99A-Zア-ン]+/ ) ) { alert("図面名にカンマ、~、英数字が全角で入力されている可能性があります。確認してください。"); return 1; } return 0; } function AllCheck() { var check = 0; check += zumenmeicheck(); if( check > 0 ) { return false; } return check; } //--> 図面名が最大で50個存在するもの Response.Write "<FORM NAME=""iform"" ACTION="" ./fukuzuban-2.asp"" METHOD=""POST"">" For i=1 To 50 Response.Write "<TR><TD><INPUT TYPE=""TEXT"" STYLE=""background-color:skyblue"" NAME=""zumen_mei" & i & """ MAXLENGTH=""100"" SIZE=""40"" onblur=""zumenmeicheck();"">" Next Response.Write "<INPUT TYPE=""SUBMIT"" VALUE="" 登録 "" onClick=""return AllCheck();"">" 色々と調べてはみましたが、解決出来ませんでした。何卒よろしくお願いします。

  • XML初心者です。

    いつもお世話になっております。 下記のPHPを解析中なのですが、さっぱり分かりません。 「何をしているか(どんな動きをしているか)」をどなたか解説していただけませんでしょうか。 よろしくお願い致します。 ----------------------------------- <?php class EditableGrid { (略) public function addColumn(・・・(略)・・・) { $this->columns[$name] = array(・・・(略)・・・); } private function _getRowField($row, $field) { return is_array($row) ? (isset($row[$field]) ? $row[$field] : '') : (isset($row->$field) ? $row->$field : ''); } public function getXML((・・・(略)・・・)); { $xml = '<?xml version="1.0" encoding="'. $this->encoding . '" ?>'; $xml.= "<table><metadata>\n"; foreach ($this->columns as $name => $info) { $label = self::escapeXML($info['label']); $xml.= "<column name='$name' label='$label' datatype='{$info['type']}'". ($info['bar'] ? "" : " bar='false'") . " editable='". ($info['editable'] ? "true" : "false") . "'>\n"; if (is_array($info['values'])) { $xml.= "<values>\n"; foreach ($info['values'] as $key => $value) $xml.= "<value value='{$key}'><![CDATA[{$value}]]></value>\n"; $xml.= "</values>\n"; } $xml.= "</column>\n"; } $xml.= "</metadata><data>\n"; $fetchMethod = method_exists($rows, 'fetch') ? 'fetch' : (method_exists($rows, 'fetch_assoc') ? 'fetch_assoc' : NULL); if (!$fetchMethod) foreach ($rows as $row) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); else while ($row = call_user_func(array($rows, $fetchMethod))) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); $xml.= "</data></table>\n"; return $xml; } ----------以下まだ続くのですが省略します-------- private function getRowXML  ・  ・ (略)  ・  ・ public function renderXML  ・  ・ (略)  ・  ・ } 以上

    • ベストアンサー
    • PHP