- PR -

ドロップダウンリスト/セレクトボタンのreadonly処理方法(struts)

投稿者投稿内容
ド若葉
会議室デビュー日: 2005/08/25
投稿数: 15
投稿日時: 2005-08-31 14:57
ドロップダウンリストやラジオボタンの項目をREAD ONLYにしたいのですが、
<html:select>や<html:radio>には<html:text>の様にreadonlyを指定する
方法はどうすればいいでしょうか。
※<html:hidden>だとフィールド自体消えてしまったため
 readonlyを指定する方法があるのかと考えていますが、
 <html:hidden>でreadonlyと同様の事ができるのであればそちらでもかまいません。

よろしくお願いします。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-08-31 15:14
>ドロップダウンリストやラジオボタンの項目をREAD ONLYにしたいのですが、
><html:select>や<html:radio>には<html:text>の様にreadonlyを指定する
>方法はどうすればいいでしょうか

リファレンス読めば一目瞭然。
http://struts.apache.org/userGuide/struts-html.html
disabled属性あたりでできるかも。

><html:hidden>でreadonlyと同様の事ができるのであればそちらでもかまいません。
<html:hidden> はそもそも見えないのだから、readonlyも何もない気がしますが?
ド若葉
会議室デビュー日: 2005/08/25
投稿数: 15
投稿日時: 2005-08-31 16:09
ハツキタツミありがとうございます。
私の質問の仕方だとご指摘の通りです。言葉足らずでごめんなさい。
まず、自分が扱っているこの項目が必須入力項目になっています。
この状態でdisabled="true"でやってみた所、
NOT NULL制約でエラーが出てしまいます。

<html:select property="AREA" disabled="true">
<html:option value="1" >1.体育館</html:option>
<html:option value="2" >2.視聴覚室</html:option>
<html:option value="3" >3.会議室</html:option>
</html:select>

なので、表示だけされている常態でかつDBから取得した値をそのまま返して
やりたいというところです。(本当に言葉足らずでした。)

<html:hidden>がフィールドを消してDBの値だけ表示できるような事が
できるのかと思い<html:hidden>について書きましたが、見当違いのようなので
未視してください。

よろしくお願いいたします。
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-08-31 16:28
こんにちわ。

引用:

ド若葉さんの書き込み (2005-08-31 16:09) より:

なので、表示だけされている常態でかつDBから取得した値をそのまま返して
やりたいというところです。(本当に言葉足らずでした。)


それを実現できる属性はなさそうです。

操作できないのにSELECTを使うのはユーザーから見た場合ちょっと
分かりづらいので、普通に文字で表示させておくのはどうでしょうか。
実際のデータはhiddenに入れておきます。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-08-31 16:32
Not Nullというのは、当該画面からのリクエストによって起動された
ビジネスロジックの処理(DBにINSERT/UPDATEする時でしょうか)で発生するんですよね?

selectによるドロップダウンリストは、disabledにすると値がサーバ側に送信されなかった
と思うので、そのせいではないでしょうか?

対応としては、selectに対応したhiddenパラメタを用意しておいて、
JavaScriptでselectの値をhiddenパラメタに設定すれば良いと思います。

コード:
<script>
function setArea() {
  /* 
   * ドロップダウンAREA_DOROPDOWNの選択値を、
   * hiddenパラメタAREAにセットするような
   * JavaScriptを書く
   */
</script>

<form onSubmit="setArea()">
        :
  <select name="AREA_DROPDOWN" disabled>
    <option value="1">1.体育館</option>
        :
  </select>
  <input type="hidden" name="AREA">
        :
</form>

ド若葉
会議室デビュー日: 2005/08/25
投稿数: 15
投稿日時: 2005-08-31 17:23
コナンさん、YOU@ITさんありがとうございます。

理解が間違ってたら申し訳ないですが、
コナンさんのコメントにある方法とYOU@ITさんが書いていただいた
方法というのは同じという事でいいのでしょうか。

引用:


コード:
<script>
function setArea() {
  /* 
   * ドロップダウンAREA_DOROPDOWNの選択値を、
   * hiddenパラメタAREAにセットするような
   * JavaScriptを書く
   */
</script>

<form onSubmit="setArea()">
        :
  <select name="AREA_DROPDOWN" disabled>
    <option value="1">1.体育館</option>
        :
  </select>
  <input type="hidden" name="AREA">
        :
</form>





プログラム自体初心者なので申し訳ないのですが、HERD部の
<script>
function setArea() {
/*
* ドロップダウンAREA_DOROPDOWNの選択値を、
* hiddenパラメタAREAにセットするような
* JavaScriptを書く
*/
</script>
の部分について、何かサンプルや似たようなものが勉強できるサイトが
ありましたら教えていただけないでしょうか。

また、現在のSELECT部に書く
<form onSubmit="setArea()">
:@
<select name="AREA_DROPDOWN" disabled>
<option value="1">1.体育館</option>
:A
</select>
<input type="hidden" name="AREA">
:B
</form>
に関して、Aの部分は残りの選択項目を書けばいいのだと思うのですが、
@とAの部分は何を省略されていますでしょうか。

あと、タグに関して
<script> → <script language="javascript">
<form> → <html:form>
<select> → <html:select>
<option> → <html:option>
とすればいいのでしょうか。

理解浅く申し訳ありませんが、よろしくお願いします。
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-08-31 17:39
引用:

ド若葉さんの書き込み (2005-08-31 17:23) より:

理解が間違ってたら申し訳ないですが、
コナンさんのコメントにある方法とYOU@ITさんが書いていただいた
方法というのは同じという事でいいのでしょうか。


見た目がちょっと違います。
僕のはSELECTを使わないで、文字だけ表示させるやり方です。

>YOU@ITさん
個人的には、動的に選択可/不可を切り替える場合以外は、
普通に文字として表示したほうがいいと思うんですけど、
どうなんでしょ。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-08-31 20:30
引用:

ド若葉さんの書き込み (2005-08-31 17:23) より:
プログラム自体初心者なので申し訳ないのですが、HERD部の

の部分について、何かサンプルや似たようなものが勉強できるサイトが
ありましたら教えていただけないでしょうか。


JavaScriptで、Google検索するといくらでもありますよ。
僕が良く見るのは、
http://www.tohoho-web.com/js/
http://www.usagi-js.com/
ですね。
selectオブジェクトと、hiddenオブジェクトの操作方法を調べればわかると思います。

引用:

@とAの部分は何を省略されていますでしょうか。


特に何かは意識していません。HTMLのその他の部分です。

引用:

あと、タグに関して
<script> → <script language="javascript">
<form> → <html:form>
<select> → <html:select>
<option> → <html:option>
とすればいいのでしょうか。


そうですね。僕が書いたのは生のHTMLですので、Strutsのカスタムタグに置き換えてください。

スキルアップ/キャリアアップ(JOB@IT)