안녕하세요. 며칠만에 들리네요.. 질문입니다.ㅜ

돔파서를 사용해서 기상청 사이트에 xml을 받아오는 중입니다.

 

텍스트는 다받아왓구요 ㅎㅎ

 

거의 마물단계입니다..

 

너무 노가다성이 심해서요..제가...

 

아래코드를 보시죠.

 

 

<c:out value="${d1}"/><br>

<c:if test="${w1 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w1 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w1 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w1 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>

최저기온 : <c:out value="${l1}"/>˚C //
최고기온 : <c:out value="${h1}"/>˚C<br><br>

<!-- 두번째 -->

<c:out value="${d2}"/><br>

<c:if test="${w2 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w2 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w2 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w2 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>

최저기온 : <c:out value="${l2}"/>˚C //
최고기온 : <c:out value="${h2}"/>˚C<br><br>
<!-- 세번째 -->

<c:out value="${d3}"/><br>

<c:if test="${w3 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w3 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w3 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w3 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>

최저기온 : <c:out value="${l3}"/>˚C //
최고기온 : <c:out value="${h3}"/>˚C<br><br>

 

 

////////////////////////////////////////////////////////

컨트롤러 에서 w1~18, l1~18, h1~18, d1~18 을 다보내서 위 jsp에서 하나하나씩 받아주고있습니다. - -

 

너무 노가다성이 심해서요... 이런것을 18개나 찍어주다보니.. 너무 쓸때없이 코드만 긴거같아서요..

 

여기서 질문...<c:out 이나 <c:if 태그들은 <c:foreach가 아닌 일반 for문이라던지 다른 방법으로

 

반복을 걸수있을까요??

얘를 들면.. (제생각)...

 

<%for(int i=1; i<19; i++){%>

<c:out value = "${'d'+i}"/>

<c:out value = "${'h'+i}"/>

<c:out value = "${'l'+i}"/>

<c:out value = "${'w'+i}"/>

<% } <%>

 

이런식으로요 ㅠㅜ(하나하나 다써주지않고 포문을 돌리는식으로유...)

 

or

 

<% String a =%> <c:out value = "${w1}"/> <% ; %>

이렇게???ㅎㅎㅎ ㅜㅜㅜㅜㅜ

 

--------------------------------------------

 

 

혹은 <c:forEach 문으로 이것들을 제가 원하는 식으로 받을수있을까요??

 

혹시나해서 위에것들을 다 배열에 담아서 받아와서 forEach로 받으라고 말슴하시는분들도 계실수잇는데..

 

전 하나하나 받아서 그애들 뒤에 수식어를 붙여야 하기때문에... 그방법은 안되서 결국 이방법을 택하였습니다 ㅜ

 

혹시나.. 다 틀리다면.. 좋은 방법 하나만 제시해주세요 ㅜ,ㅜ,ㅜ,ㅜ,ㅜ,ㅜ

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • javascript는 아니시네요 ㅎ

     

    날씨 이미지인듯 하네요

    우선 코드 노가다를 줄여야 하니 펑션 또는 메소드를 만드시는게 좋을듯 합니다.

    이건 간단한 예 입니다.

    <img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w1)%>.jpg"/>

    <img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w2)%>.jpg"/>

    <img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w3)%>.jpg"/>

     

    그런데 돔 파서에서 반환된 결과가 배열로 되어있지는 않나요?

    기상청 자료는 xml 이고 xml을 배열 또는 iterator등 반복자로 값이 리턴 될 것으로 생각이 됩니다.

    어떤 값이 리턴되느냐에 따라서 구현이 완전히 달라지겠네요

  • 답변 감사드립니다..

    우선 봇님 말씀대로.. 배열에 담아서 전체적으로 받아왓었습니다..

    하지만 저는 배열에 들어있는 것들에 대하여 하나하나씩 부가적으로 텍스트를 붙여 주어야 했기에

    각각의 배열을 구성하는것에 대해 하나하나씩다 변수를 주어서 넘겨 받고있습니다.. jsp에..

    예를들면

    날씨는 w1~18까지.. 최저온도는 l1~l18

    이런식으루요..

    ..후,,

    아직 실력이 마니 부족한지라.. 펑션이나 메서드를 만들어서 해야한다니..

    고생좀 해야겠네욤 ㅜㅜ

    알겠습니당..

  • 객체 구조를 좀 변경하면 어떨까 합니다.

    "지역"이 있고 이 "지역"에 "날씨"와 "최저온도"등 값이 있겠지요?

    (지역).getWeather

    (지역).getTemperature

    data[지역][weather]

    data[지역][temperature]

    이렇게 만드시면 "지역"을 반복하여 값을 가져올 수 있습니다.

    객체 또는 배열을 잘 설계하시면 수고를 덜 수 있을것으로 보여집니다.

    궁금하신 내용 있으시면 질문 남겨주세요~

  • 선배의 새로운.. 지령이 떨어져서..일단 다른것좀 해본후에

    봇님 말씀대로 해보겠씁니다 ㅎㅎㅎ

    답변감사드립니다!

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요