2017-10-23 11 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>의 사용법을 오해 한 것 같습니다. 나는 그것을 달성하기위한 두 가지 아이디어가 있지만 모두 실패하기 때문입니다. 그래서 나는 사람을 찾고있는 올바른 방향과 올바른 개념을 제발.

여기 내 생각입니다. 값이 "예", 그냥 일반 텍스트 인 경우 내가 코드를 실행하면

<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

나는 그것을 이해할 것이라고 생각한다. 이 솔루션은 두 번째 아이디어에 중점을 두어이 부분에 대한 또 다른 열을 만듭니다.

나는 그것은 그래서 열에 대한 전체 코드는이

<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\")"> 

을 변경해야