2017-10-23 16 views
0

ユーザー名とユーザーが管理者かどうかを示す表があります。条件または列の値に基づいてリンクとして行の値を設定する方法

Username   Administrator  
user1   Yes 
user2   No 
user3   No 
user4   Yes 

ここは表のコードです。正常に動作します。

私がやろうとしています
<display:table name="${userTable}" class="users" uid ="row"> 
<display:column style="width: 8%" title="Username" property="username" maxLength="30" sortable="true" /> 
<display:column style="width: 4%" title="Administrator" property="usertype" sortable="true" /> 
</display:table> 

は、ユーザーが管理者である場合は、「はい」は、管理者が別のページにアクセスするためにクリックすることができますテーブル内のクリック可能なリンクになりますです。ユーザーが管理者でない場合、「いいえ」は表の単なるテキストに過ぎません。

私はコードを書き始めますが、私は<display:column><s:if>の使い方を誤解していると思います。私はそれを達成するための2つのアイデアがあるが、すべてが失敗するからです。だから私は正しい方向を示し、私のコンセプトを修正する人を探しています。

これは私の最初のアイデアです。私は、コードを実行すると

<display:table name="${userTable}" class="users" uid ="row"> 
<display:column style="width: 8%" title="Username" property="username" maxLength="30" sortable="true" /> 
<s:if test="#session.USER_SESSSION_HANDLE.usertype.contains(\"Yes\")"> 
<display:column style="width: 4%" title="Administrator" property="usertype" sortable="true" /> 
</s:if> 
</display:table> 

、表は変更を持っていない値は「はい」、それだけで通常のテキストである場合、私は管理者の列に意味、何もクリック可能なリンクがありません。だから私の最初のアイデアは成功ではありません。

私は前のコードを削除します。ここに私の第二の考えです:私の第二の考えで

<display:table name="${userTable}" class="users" uid ="row"> 
<display:column style="width: 8%" title="Username" property="username" maxLength="30" sortable="true" /> 
<display:column style="width: 4%" title="Administrator" property="usertype" sortable="true" /> 

<display:column style="width: 5%" title="Link for Administrator" sortable="true"> 
<s:if test="#session.USER_SESSSION_HANDLE.usertype.contains(\"Yes\")"> 
<s:url var="editURL" namespace="/AdminLink" action="adminLink_edit"> 
<s:param name="recordId" value="%{#attr.row.recordId}" /> 
</s:url> 
<s:a href="%{editURL}">It is a link</s:a> 
</s:if> 
<s:else> 
<s:label>It is not a link</s:label> 
</s:else> 
</display:column> 

</display:table> 

、私はそれがリンクであるか、それがリンクではないかどうかを示すために別の列を作成します。リンクであれば、それ以上のアクセスのためにクリック可能でなければならず、リンクでなければテキストとして表示されます。私は、コードを実行すると

、新しい列が作成されますが、すべての行であっても、管理者の列が行に「いいえ」を示す「それはリンクです」と表示されます。

user1が管理者であり、その行に「リンクです」と表示されるため、私はアプリケーションにアクセスするためにuser1を使用しているかもしれませんが、すべての行に表示される理由はわかりません。

後、私がシステムにアクセスするために(このユーザ名は管理者ではない)はuser2を使用し、それはすべての行に影響なぜ、私はすべての行が「それはリンクではありません」と表示参照、再び、私は理解していません。私は<s:if test="#session.USER_SESSSION_HANDLE.usertype.contains(\"Yes\")">を使用していると思いますか?しかし、なぜすべての行に同じ結果が表示されるのでしょうか?私がやろうとしています何

はクリック可能なリンクとして「はい」にすることです、そして「いいえ」だけのシンプルなテキストです。サンプルテーブルは次のようになります。 (申し訳ありませんが実際に

Username   Administrator  
user1   **Yes** 
user2   No 
user3   No 
user4   **Yes** 

「はい」の中で**私はunderlineを置くことはできません実現、私は入れて、私は私の最初のアイデアは成功を達成することはできませんが、と思うと、私はリンクを表示するために余分な列を使用しません。

しかし、私の第二の考えもない成功と私は問題を引き起こすどの部分を確認していない。

誰かが私には私のミスを知っているとベースのリンクとして列値を作成する方法についての示唆を与えるだろう条件や列の値を入力してください。ありがとうございます。

答えて

0

私はそれを理解すると思います。このソリューションは、このパートの別の列を作成する私の2番目のアイデアに焦点を当てています。

は、私はそれはとてもその列の完全なコードは、この

<display:column style="width: 5%" title="Link for Administrator" sortable="true"> 
<s:if test="#attr.row.usertype eq 'Yes'> 
<s:url var="editURL" namespace="/AdminLink" action="adminLink_edit"> 
<s:param name="recordId" value="%{#attr.row.recordId}" /> 
</s:url> 
<s:a href="%{editURL}">It is a link</s:a> 
</s:if> 
<s:else> 
<s:label>It is not a link</s:label> 
</s:else> 
</display:column> 
ようになります

<s:if test="#attr.row.usertype eq 'Yes'> 

する必要があります。このコードを少し

<s:if test="#session.USER_SESSSION_HANDLE.usertype.contains(\"Yes\")"> 

を変更する必要があります

関連する問題