2017-03-26 2 views
1

내 시간에 문제가 selectItems 두 개의 개별 배열을 itemLabel 및 jsf f : selectItems의 값으로 인쇄 하시겠습니까? selectOneMenu 및 F :

나는 이들 각각에 대한 목록

private double list = {51.1511, 53.51351, 0.634343, 2.52555} 

전화 번호와 레이블 내 배열에서 촬영되는 "값"을 원하는 값은

private String curr = {PYN, DKT, ALT, BIT} 

은 현재 내가 할 수

<h:selectOneMenu value="#{serviceBean.select2}"> 
    <f:selectItems value="#{serviceBean.list}" itemLabel="#{serviceBean.curr}" /> 
</h:selectOneMenu> 

이 방법은 숫자 값을 제공하지만 항목 레이블 안에 문자열을 표시하는 대신 메모리 참조를 대신 표시합니다. 이 문자열을 표시하려면 어떻게합니까?

+0

TYE을 만들이 : 개인 최종 목록 curr = Arrays.asList ("PYN", "DKT", "ALT", "BIT"); –

+0

내 selectOneMenu가 xhtml 파일에서 볼 수 없으므로 setter/getter를 만들지 않습니까? 편집 : 난 그냥 curr.toString() 사용하여 내 자신의 getter 만든 지금 각 줄을 전체 배열로 각 선택 항목을 표시합니다. [PYN, DKT, ALT, BIT] [PYN, DKT, ALT , BIT] – Kilzrus

답변

1
public class General{ 
    private double listValue; 
    private String curValue; 

    public General(String curValue, double listValue){ 
    this.listValue = listValue; 
    this.curValue = curValue; 
    } 

    public double getListValue(){ return listValue;} 
    public String getCurValue(){ return curValue;} 
} 

나는 당신이 당신의 객체를 생성한다고 가정 ArrayList에 ArrayList<General> myvalues

ArrayList<General> myvalues = new ArrayList<>(); 
myvlues.add(new General("PYN",51.112)); 
... 

<h:selectOneMenu value="#{serviceBean.selectedItem}"> 
<f:selectItems value="#{serviceBean.myvalues}" 
       var="myvalue" 
       itemValue="#{myvalue.listValue}" 
       itemLabel="#{myvalue.curValue}"/> 
</h:selectOneMen> 
+0

안녕하세요,이 시도했지만 여전히 작동하지 않습니다. 나에게 오류가 발생했습니다 Cant 인스턴스 생성 클래스 : Bean.ServiceBean. value = ""로 배열을 읽을 수 있지만 itemValue = ""및 itemLabel = ""메모리 위치를 인쇄 할 수있는 이유를 이해할 수 없습니다. 이 문제의 원인은 무엇이며 .toString()의 일부 유형을 사용하여이를 우회 할 수있는 방법이 있습니까? – Kilzrus

+1

값은 객체가 될 수 있으므로 값과 레이블은 다를 수 있습니다. 그래서 대부분의 경우에 객체와 그 toString 메소드를 전달하는 것만으로는 충분하지 않습니다. 어쨌든 이제 변경하고'"그리고 이것이 주 오류가 아닌 경우 전체 오류 라인을 작성하십시오 – mismanc

+0

죄송합니다. 변경 값 = "# {serviceBean.select2}"로 무엇을 의미합니까? 그것을 무엇으로 변경합니까? 저는 select1과 select2를 변수로 사용합니다 그래서 나는 결과를 내 webservice의 매개 변수로 전달할 수있다. 나는 아직도 "클래스를 인스턴스화 할 수 없다 : Bean.ServiceBean"을 얻는다. – Kilzrus

0

프리젠 테이션 계층에서 포함 된 모델에 액세스하려면 관리 빈을 사용해야합니다.

의 관리 빈 :

@Named 
@SessionScoped 
public class MyBean 
{ 
    private final List<Double> values = Arrays.asList(1.1, 2.1, 3.1); 
    private final List<String> labels = Arrays.asList("AAA", "BBB", "CCC"); 
    private Double selectedItem; 

    public List<String> getItems() 
    { 
    return labels; 
    } 

    public Double getValueAt(int ndx_) 
    { 
    return values.get(ndx_); 
    } 

    public String getLabelAt(int ndx_) 
    { 
    return labels.get( ndx_); 
    } 

    public Double getSelectedItem() 
    { 
    return selectedItem; 
    } 

    public void setSelectedItem(Double selectedItem_) 
    { 
    selectedItem = selectedItem_; 
    } 

} 

는 JSF facelet :

<h:selectOneMenu value="#{myBean.selectedItem}"> 
    <c:forEach items="#{myBean.items}" var="item" varStatus="itemIndex"> 
    <f:selectItem itemValue="#{myBean.getValueAt(itemIndex.index) }" itemLabel="#{myBean.getLabelAt(itemIndex.index)}"/> 
    </c:forEach> 
</h:selectOneMenu> 
+0

그냥 시도하고 nums 예기치 않은 유형을 말하는 오류가 발생합니다 : 참조, 발견 : 더블 어떤 아이디어? – Kilzrus

+0

확인. Double에'double '을 수정했습니다. –

+0

Double도 시도했지만 시도해 보지 않았습니다. – Kilzrus