Struts 1- 액션 메이지를 표시하는 방법
문제
나는 표시하고있다 ActionMessage
s를 통해 JSP
다음 명령에 의해 파일 :
<logic:messagesPresent message="true">
<ul id="messsages">
<html:messages id="msg" message="true">
<li><bean:write name="msg"/> </li>
</html:messages>
</ul>
</logic:messagesPresent>
이제 선택한 메시지 만 표시하고 싶습니다. 표시 할 메시지를 어떻게 표시 할 수 있습니까?
업데이트되었습니다
사실 나는 두 가지가 있습니다 ActionMessages
물체 - messages
그리고 warnings
. 이제 두 가지를 별도로 표시하고 싶습니다. JSP
페이지 ... 표시 할 페이지 messages
그리고 다른 warnings
.
그래서 JSP
표시 할 메시지가 표시됩니까?
업데이트 -2
이제 이상한 것을 발견했습니다.
saveMessages(request, messages);
saveMessages(request, warnings);
위의 코드 만 썼을 때만 warnings
일하고 있었다. 위의 두 진술의 순서를 취소했을 때 messages
일하고 있었다.
하나만 추가 할 수있는 것 같습니다 ActionMessages
요청에 객체. 맞는 경우 메시지를 2로 표시하는 방법 ActionMessages
객체가별로.
해결책
단순한,
당신의 분리 messages
그리고 당신의 warnings
: 스트럿 조치에서 다음과 같이 메시지와 경고를 저장하십시오.
//For messages
saveMessages(request, messages);
//For warnings
saveErrors(request, warnings);
표시하려면 :
<logic:messagesPresent message="true">
<html:messages id="aMsg" message="true">
<logic:present name="aMsg">
<!-- Messages -->
<div class="messages">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
<logic:messagesPresent message="false">
<html:messages id="aMsg" message="false">
<logic:present name="aMsg">
<!-- Warnings-->
<div class="warnings">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
이것은 모두를 표시합니다 messages
(설정으로 message="true"
)
<html:messages id="aMsg" message="true">
이것은 모두를 표시합니다 warnings
(설정으로 message="false"
)
<html:messages id="aMsg" message="false">
업데이트 당신이 지금 당신의 질문을 정리하고 있다는 것을 보면, 가장 간단한 방법은 이것을하는 것입니다.
사용자가보고 싶은지 여부를 나타내는 특정 플래그가 있습니다. messages
또는 warnings
. Struts 조치에서 플래그를 요청하고 사용자가보기 메시지 또는 경고를 선택했는지 확인하십시오. 그런 다음 중 하나를 저장합니다 warnings
또는 messages
사용자 선택을 기반으로하고 동일한 페이지를 표시하여 메시지를 표시합니다.
그 이유는 Struts (메시지 또는 오류를 저장할 때)가 요청시 또는 다음 상수와 함께 세션을 저장하기 때문입니다.
- Globals.message_key (할 때 할당됩니다
saveMessages(request, messages)
) - Globals.error_key (할 때 할당됩니다
saveErrors(request, errors)
)
사용할 때 <logic:messagesPresent message="true">
, struts 검색을 검색합니다 MESSAGE_KEY
(메시지 = true) 또는 ERROR_KEY
(메시지 = false) 또는 둘 다 (메시지 = 없음). 당신은 그것에 대한 통제가 없습니다.
<html:messages />
TLD 의견은 다음과 같습니다.
기본적으로 태그는 Bean을 검색합니다. Globals.error_key Constant String,
그러나이 속성이 'True'로 설정되면 Bean은 Globals.message_key Constant String에서 검색됩니다. 또한 이것이 'true'로 설정되면 이름 속성에 할당 된 값이 무시됩니다.
스크립트를 작성하여 해당 키가 있는지 확인할 수도 있습니다. <logic:iterate />
키를 통해 메시지를 표시합니다 (그러나 너무 많은 일이 될 것입니다).
도움이 되었기를 바랍니다.
다른 팁
사용하는 대신 message
속성 messagesPresent
그리고 messages
태그, 당신은 그것을 사용할 수 있습니다 name
속성 페이지, 요청, 세션 또는 응용 프로그램 범위에있는 ActionMessages 객체의 이름을 지정합니다.