财产';登录';在类型java.lang.String上找不到
我试图获取Primefaces的selectOneMenu的值,但它给出了一个not found属性的错误。UserBean类中的我的方法返回一个UserDTO对象,并且登录在实体类中不区分大小写,但它仍然捕获错误 UserBean类财产';登录';在类型java.lang.String上找不到,java,casting,Java,Casting,我试图获取Primefaces的selectOneMenu的值,但它给出了一个not found属性的错误。UserBean类中的我的方法返回一个UserDTO对象,并且登录在实体类中不区分大小写,但它仍然捕获错误 UserBean类 public List<UserDTO> getIds() { Object[] array = userService.getWrapperData().toArray(); List<String> values = n
public List<UserDTO> getIds() {
Object[] array = userService.getWrapperData().toArray();
List<String> values = new ArrayList<String>();
for (Object temp : array) {
for (String s : temp.toString().split(",")) {
if (("id").equals(s.split("=")[0]))
values.add(s.split("=")[1]);
}
}
String[] loginVals = new String[ values.size() ];
values.toArray( loginVals );
@SuppressWarnings("unchecked")
List<UserDTO> valuesLogin = (List) values;
return valuesLogin;
}
indexDTO.xhtml
<h:body styleClass="login">
<h:form id="form">
<p:dataTable var="users" value="#{userBean.users}" paginator="true"
widgetVar="usersTable" rows="10" sortMode="multiple"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="5,10,15" selectionMode="single" id="userTable"
lazy="true">
<p:column headerText="Id" sortBy="#{users.id}"
filterBy="#{users.id}">
<f:facet name="filter">
<p:selectOneMenu onchange="PF('usersTable').filter()">
<f:selectItem itemLabel="Select One" itemValue="#{null}"
noSelectionOption="true" />
<f:selectItems value="#{userBean.getIds()}" var="userLogin" itemValue="#{userLogin.login}" itemLabel="#{userLogin.login}" />
</p:selectOneMenu>
</f:facet>
<h:outputText value="#{users.id}" />
</p:column>
</p:dataTable>
</h:form>
</h:body>
您正在将
List
转换为List
:
此外,如果要将构造函数UserDTO(字符串登录)
添加到中,则可以轻松地将值映射到值登录:
valuesLogin = values.stream().map(UserDTO::new).collect(Collectors.toList());
我用一种非常奇怪的方式解决了我的问题
我把我的UserBean方法改成了这个
public List<UserDTO> getIds() {
return userService.getWrapperData();
}
public List getIds(){
返回userService.getWrapperData();
}
然后我可以从indexDTO.xhtml中提取ID。userBean.getIds()返回什么?[1,2,3,5],这是我已经想要的@皮罗
List<String> values = new ArrayList<String>();
...
@SuppressWarnings("unchecked")
List<UserDTO> valuesLogin = (List) values;
return valuesLogin;
for(String login : values){
UserDTO dto = new UserDTO();
dto.setLogin(login);
valuesLogin.add(dto);
}
valuesLogin = values.stream().map(UserDTO::new).collect(Collectors.toList());
public List<UserDTO> getIds() {
return userService.getWrapperData();
}