문제

나는 표시하고있다 ActionMessages를 통해 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 객체의 이름을 지정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top