- PR -

struts1.1 タグにstringの引数はできますか?

1
投稿者投稿内容
きりり
会議室デビュー日: 2004/10/06
投稿数: 4
投稿日時: 2004-10-06 16:52
初めての投稿ですが宜しくお願いいたします。

環境は
-----------------------
tomcat 4.1.18
Java j2sdk1.4.2
-----------------------
になっております。

メニューIDによってJSPでメニューの表示非表示を行いたいのですが、
以下のようなメソッドがセッション上のBeanにあるとします。

---------------------------------------------------------------------------------
public boolean getShowMenu( String _menuID ){
 if( ・・・・・・・・ ){
  return true;
 }
 return false;
}
---------------------------------------------------------------------------------
これをJSP上で

---------------------------------------------------------------------------------
<logic:equal name="・・・・・" property="showMenu" value="false">
  メニュー001
</logic:equal>
---------------------------------------------------------------------------------

のようにして、使いたいのですが、
Stringの引数( menuID )をBeanに渡すやり方がわかりません。
int型を渡せるのはわかるのですが。

それともString型は無理で、menuIDごとにbooleanを返すメソッドを
作成するしかないのでしょうか。

ご存知の方いらっしゃいましたら、
ご教授下さい。
よろしくお願いいたします。



でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-10-06 17:13
コード:
public boolean getShowMenu( String _menuID ){ 
 if(SOME_EXPRESSION){ 
  return true; 
 } 
 return false; 
}



Bean なのにこのメソッドは変ですよ。

setXXX(), getXXX() がペアになるべきですし、
getXXX()なのに引数を取るのも変です。

でもやりたい事は、なんとなくわかりましたので以下のような実装だとどうでしょうか。?

コード:
public String getMenu001()
{
    return menu001;
}

public void setMenu001(String menu001)
{
    this.menu001 = menu001;
}
.
.
.




コード:
<logic:equal name="menuBean" property="menu001" value="true">
  メニュー001
</logic:equal>
<logic:equal name="menuBean" property="menu002" value="true">
  メニュー002
</logic:equal>
<logic:equal name="menuBean" property="menu003" value="true">
  メニュー003
</logic:equal>
.
.
.


きりり
会議室デビュー日: 2004/10/06
投稿数: 4
投稿日時: 2004-10-06 17:55
さっそくのご返答ありがとうございます。

少し説明不足だったかもしれません。^^;
menuIDですがプロパティファイルからひろってきており、
メニューが増えることや、IDが変更されることも考えて
できればmenuIDごとのメソッドは避けたいと思っております。

代替案として現在は以下のようにしようかと思っております。
以下の方法で動くのは確認しております。
( メニューは2つの構成からできているとします )

bean上
menuIDboxに見れるmenuIDが入っています。
コード:
public boolean getShowMenu1( int _menuID ){
	return menuIDbox.contains(MenuProperties.getMenu1()+_menuID);
}
public boolean getShowMenu2( int _menuID ){
	return menuIDbox.contains(MenuProperties.getMenu2()+_menuID);
}



これをJSP上で

コード:
<logic:equal name="・・・・・" property="showMenu1[000]" value="false">
メニュー1
</logic:equal>
<logic:equal name="・・・・・" property="showMenu2[000]" value="false">
メニュー2
</logic:equal>


できるものならStringを引数にして、メソッドを一つにしたいのですが、
それとも根本的にgetXXX()が引数を取るのがおかしいのでしょうか・・
よろしくお願いします。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-10-06 20:04
引用:

それとも根本的にgetXXX()が引数を取るのがおかしいのでしょうか・・



Bean の仕様では getXXX() は引数を取ってはいけない・・・
と思ってStrutsドキュメント読んだら、認めてるんですね、この書き方・・・。
カルチャーショックを受けました。

property="showMenu.menuId"

うろ覚えなのですが、こうした形でMapを処理できる記法があったような気がします。
getShowMenu() が Map を返す実装で、その Map から menuId をキーとする
値を取ってこれたような。

うーん、ちょっと記法が違うかもしれません。
見当違いだったらすみません。
1

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