2012-08-29 45 views
0

我从数据库中查询并收到一个整数列表。例如:0,1,2
如果我向浏览器显示数字,用户将不理解数字的含义。
所以,我想映射一个数字到一个字符串。例如:
例如:0:待定,1:有效,2:无效,依此类推。
文件display.xhtml将源代码遵循:如何将值映射到文本?

<!--display.xhtml--> 
<t:dataTable id="itemTable" value="#{itemBrowser.itemList}" var="item"> 
    <t:column> 
    <f:facet name="header"> 
     <h:outputText value="Status" /> 
    </f:facet> 
    <h:outputText value="#{itemStatusListReversedString[item.status]}" /> 
    </t:column>   
</t:dataTable> 

<!--faces-config.xml--> 
<managed-bean> 
    <managed-bean-name>itemStatusListReversedString</managed-bean-name> 
    <managed-bean-class>java.util.HashMap</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <map-entries> 
    <key-class>java.lang.String</key-class> 
    <map-entry> 
     <key>0</key> 
     <value>Inactive</value> 
    </map-entry> 
    <map-entry> 
     <key>1</key> 
     <value>Active</value> 
    </map-entry> 
    <map-entry> 
     <key>2</key> 
     <value>Pending</value> 
    </map-entry> 
    </map-entries> 
</managed-bean> 

但是,没有什么可输出浏览器。那么,我该如何解决这个问题?

感谢

+0

字符串值在哪里,有效,无效?他们在数据库中吗? – Averroes

+0

字符串值是数字的含义。它们不存储在数据库中。我只是用它来向用户显示意义。 –

回答

1

我认为这个问题是在这一行:

<h:outputText value="#{itemStatusListReversedString[item.status]}" /> 

你必须这样做

<h:outputText value="#{item.stringValue}" /> 

,并在item类中添加这样的事情:

public String getStringValue(){ 
return itemStatusListReversedString.get(this.numberValue); 
} 

必须在faces-配置之前改变item类注入itemStatusListReversedString

例子:

itemBrowser.itemList是MyClass的一个对象的名单:

public class MyClass{ 
//The necessary stuff 
private Integer valueFromDB; //0, 1, 2... 
private Map<Integer, String> itemStatusListReversedString; //The map you configured in the faces-config.xml 

//More stuff 

public String getStringValue(){ 
return itemStatusListReversedString.get(this.valueFromDB); 
} 

} 

在您配置faces-config.xml中MyClass的是这样的:

<bean id="myClassInstance"    
class="package.MyClass" scope="request">  
     <property name="itemStatusListReversedString" ref="itemStatusListReversedString"></property> 
    </bean> 

当创建MyClass的新实例使用此方法而不是使用new MyClass()创建它们:

WebApplicationContext webApplicationContext = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()); 
     MyClass bean = (MyClass)webApplicationContext.getBean("myClassInstance"); 
+0

嗨阿威罗斯,请详细解释一下。项目类中的itemStatusListReversedString是什么? –

+0

我已经更新了我的答案。 – Averroes

+0

不客气 – Averroes

0

使用enum然后用序工作(),用来对类文本的数字和值():

YourEnum.values()[ordinal]