2014-05-20 6 views
1

짧은 이야기 :JSP의 [x1, x2, x3] 대신 형식으로 목록의 값을 표시 하시겠습니까?

나는> 목록을 < 정수를 다음과 같은 필드가 엔진 = 새로운 ArrayList를(); jsp에서 $ {engine}을 사용할 때 값을 [x1, x2] 형식으로 표시하지만 링크를 만들려면 엔진 = x1, 엔진 = x2가되어야합니다. 그것을하는 방법? 또 다른 옵션은 백엔드가 [x1, x2] 형식의 값을 허용하도록하는 것입니다.

긴 이야기 :

나는 두 checkboxlists이있는 형태, 사용자는 그들의 문의 수와 엔진 출력과 같은 몇 가지 항목을 기준으로 차를 찾고 있습니다. 양식이 제출되면 검색 기준과 일치하는 모든 자동차 브랜드가 표시됩니다. 사용자가 두 브랜드 중 하나를 클릭하면 일치하는 모든 차량이 표시됩니다. 결과가 표시 될 때

... 
<s:checkboxlist name="engine" label="Engine" list="@[email protected]"/> 
<s:checkboxlist name="door" label="door" list="@[email protected]"/> 
.... 

나는 결과를 보여 모두 같은 코드를 사용하지만, 양자의 출력은 형식이다 1000,2000]

<s:property value="%{engine}"/> 
    ${engine}   

, 링크

을 다음과 같이 생성 될
<a href ="....?${engine}&${door}&....">View Cars</a> 
which would change to following 
<a href="....?engine=[1000,2000] 
       &door=[2,4,5]&.....">View Cars</a> 

링크를 클릭하면 항목을 찾을 수 없습니다. 그러나 값의 형식을 1000,2000으로 변경하면 작동합니다.

나는 모든 항목을 검토하고 원하는 형식으로 항목 문자열을 만드는 데 한 가지 방법을 사용 하겠지만 다른 방법이 있습니까?

public static final Map Engine = new TreeMap() { 
     { 
      put(1000, "Small"); 
      put(2000, "Good"); 
      put(3000, "Standard"); 
      put(4000, "Powerful"); 
      put(5000, "Excellent"); 
     } 
    ; 
    }; 
+0

잘못된 것을하고 있습니다. url의 매개 변수는'engine = 1000 & engine = 2000' 형식이어야합니다. 어떻게이 URL을 만드나요? –

+0

@AleksandrM 내 질문도 그렇습니다. 코드는 engine = [1000,2000]이라는 주소를 만들고 엔진 = 1000,2000 또는 설명했던 것과 같아집니다. 내 질문에 '짧은 이야기'부분을 읽어 주셔서 감사합니다. – Jack

+0

그러나 ** 귀하는 어떻게 ** 그러한 URL을 만드나요? 그리고 체크 박스는 귀하의 질문에 어떻게 적합합니까? 폼이 있습니까? 왜 당신은 혼자서 URL을 만드나요? –

답변

1

목록에서 URL 매개 변수를 만들려면 Struts2 태그를 사용하십시오. <s:param> 태그는 value 속성이 param_name=val1&param_name=val2 형식으로 전달 된 목록을 확장합니다.

<s:url> 
    <s:param name="engine" value="engine" /> 
    <s:param name="door" value="door" /> 
</s:url> 
+0

나는 그것이 작동하지만, 내가 페이지를 제출할 때마다 나타나는 것처럼 보입니다. 그리고 결과는 매개 변수 값이 변경되지 않는 페이지를 새로 고치지 않고 검색 조건을 편집하기 전에 페이지를 새로 고침해야합니다. – Jack

+0

@JackMoore : 다른 질문입니다. 귀하의 OP는 URL 생성에 관한 것입니다. –

+0

더 이상의 문제도 해결됩니다. 감사합니다 – Jack

0

<s:checkboxlist name="engine" label="Engine" list="engine"/> 

속성 list의 값이 목록 List <Integer> engine = new ArrayList(); $를 제공 할 필요 {엔진}의 이름이어야에 코드의 당신의 라인을 변경

나의 제안 :

빈 개체 목록 만들기 :

,210

이제 List <Engine> engineList = new ArrayList();

그래서 마침내 checBoxList

<s:checkboxlist name="engineArray" label="Engine" list="engineList" listValue="description" listKey="enginePower"/> 

당신은 아래의 값에 액세스 할 수 있습니다

public class Handler extends ActionSupport{ 

     private String[] engineArray; 

public void setEngineArray(String[] engineArray){ 

     this.engineArray= engineArray; 
    } 

@Override 
    public String execute() throws Exception { 

     // use the checkbox values here 

     return Action.SUCCESS; 
    } 
} 

을 나는 이것이 당신이

+0

현재 값이 pur (1000, "small") 인 맵을 사용하고 있습니다. pur (2000, "good"); pur (3000, "power"); – Jack

+0

질문이 업데이트되었습니다. – Jack

+0

이것은 당신을 위해 작동 할 수도 있습니다 – mahesh

0

찾고있는 것 같다 당신 JSP에서 결과를 다음과 같이 형식화 할 수 있습니다. 쉼표를 루프에 추가하거나 제공된 기능.

<c:forEach items="${engine}" var="currentItem" varStatus="status"> 
     <c:set var="myVar" value="${status.first ? ' ' : myVar} ${currentItem}" /> 
</c:forEach> 

<c:set var="string1" value="${myVar}"/> 
<c:set var="string2" value="${fn:split(string1, ' ')}" /> 
<c:set var="string3" value="${fn:join(string2, ',')}" /> 

<p>String (3) : ${string3}</p>