@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@NamedQueries({
@NamedQuery(name = Parameter.FIND_ALL, query = "SELECT pm FROM Parameter pm")
})
public class Parameter implements Serializable {
public static final String FIND_ALL = "Parameter.findAll";
@XmlTransient
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@XmlAttribute
private String type;
private String name;
// Setters and Getters
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ParameterMap {
private Map<String, List<Parameter>> parameterMap = new HashMap<String, List<Parameter>>();
@XmlElement
public Map<String, List<Parameter>> getParameterMap() {
return parameterMap;
}
public void setParmeterMap(Map<String, List<Parameter>> parameterMap) {
this.parameterMap = parameterMap;
}
}
@Path("/parameter")
public class ParameterRESTResource {
@Inject
private ParameterService paramService;
@GET
@Path("/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public List<Parameter> getAllParameters() throws JAXBException {
ParameterMap parameterMap = formatParameters(paramService.getAllParameters());
JAXBContext jaxbContext = JAXBContext.newInstance(ParameterMap.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(parameterMap, System.out);
jaxbMarshaller.marshal(parameterMap, new File("c:/temp/employees.xml"));
return paramService.getAllParameters();
}
public ParameterMap formatParameters(List<Parameter> parameters) {
HashMap<String, List<Parameter>> parameterMap = new HashMap<String, List<Parameter>>();
ParameterMap paramMap = new ParameterMap();
Parameter param = null;
List<Parameter> list = null;
for (int i = 0; i < parameters.size(); i++) {
param = new Parameter();
param = parameters.get(i);
if (param.getType() != "text") {
list = new ArrayList<Parameter>();
if (parameterMap.containsKey(param.getName())) {
list = parameterMap.get(param.getName());
list.add(param);
}
else {
list = new ArrayList<Parameter>();
list.add(param);
}
}
else {
list = new ArrayList<Parameter>();
list.add(param);
}
parameterMap.put(param.getName(), list);
}
paramMap.setParmeterMap(parameterMap);
return paramMap;
}
}
我希望我已经提供了所需的所有信息。在这个专家小组中,请大家在这个问题上帮助我。任何小小的帮助对我都是最大的帮助。提前感谢您的帮助。
包含集合作为值的映射有点棘手;您需要一个适配器和类来以JAXB可以处理的方式表示映射项。
@XmlAccessorType(XmlAccessType.FIELD)
public class ListOfEntry {
@XmlElement
private List<Entry> list = new ArrayList<>();
public List<Entry> getList(){ return list; }
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Entry {
@XmlElement
private String key;
@XmlElement
private List<Parameter> list = new ArrayList<>();
public String getKey(){ return key; }
public void setKey( String value ){ key = value; }
public List<Parameter> getList(){ return list; }
}
适配器来回执行转换:
public class Adapter
extends XmlAdapter<ListOfEntry, Map<String, List<Parameter>>> {
@Override
public Map<String, List<Parameter>> unmarshal(ListOfEntry loe)
throws Exception {
Map<String, List<Parameter>> map = new HashMap<>();
for(Entry entry : loe.getList() ) {
map.put(entry.getKey(), entry.getList() );
}
return map;
}
@Override
public ListOfEntry marshal(Map<String, List<Parameter>> map)
throws Exception {
ListOfEntry loe = new ListOfEntry();
for(Map.Entry<String, List<Parameter>> mapEntry : map.entrySet()) {
Entry entry = new Entry();
entry.setKey( mapEntry.getKey() );
entry.getList().addAll( mapEntry.getValue() );
loe.getList().add(entry);
}
return loe;
}
}
并且必须向Map字段添加注释:
@XmlElement
@XmlJavaTypeAdapter(Adapter.class)
private Map<String, List<Parameter>> parameterMap = new HashMap<>();
问题内容: 我正在尝试为Rails 4.1应用程序清理一些样式。我不想列出每种颜色及其变化,而是想创建颜色/值的映射,然后通过对其进行迭代来生成CSS。 但是,我从中得到以下错误: 我可以使用Sass变量和mixins很好;为什么也不能使用SASS映射? 问题答案: 正如@dinocarl所指出的那样,SASS 的和功能在版本3+中。我必须将gem 升级到版本5+,因为该版本的gem包SASS 3
我想将我的应用程序迁移到Spring Boot Jar部署。它目前使用没有启动的Spring4。 我在上有一个REST-API侦听器,在上有一个JavaScript-fronten,可以在上访问。 现在我找不到在靴子里做同样的事情的方法。 通过更改属性,我设法在处获得了api监听,但是我没有在处注册第二个servlet来为我的js-frontend服务。我知道jar部署不支持,我还知道Spring
我正在使用下面的代码片段映射对象 它没有映射,但当我添加这个时,它工作得很好 但却无法理解它的功能<代码>导入={Instant.class,DateTimeFormatter.class}它如何帮助映射对象?
我已经讨论过这个问题:如何使用Mockito在Spring中模拟自动构建的@Value字段?。我们如何模拟以下内容? 这样我们就可以在进行模拟时获取其价值?
我正在尝试使用ModelMapper映射对象树。 我创建了一个例子来说明我的问题: 类包含多个属性 类包含类型为Sub的对象和(至少)另一个属性 类目标包含一个简单的属性列表 源属性和目标属性的类型不同 代码: 我正在寻找一种配置单个ModelMapper实例的方法,以便满足以下约束: modelMapper能够将Sub类型的对象转换为目标对象 不幸的是,行<代码>映射(source.sub,de
我们使用的是Spring Boot2。 我们想使用Spring Boot的刷新机制,但是由于一个bug我们不能使用,因此我们不得不用和替换所有这些。 所以我们用了: 例如,使用该YAML文件: null 但是我们不能使用其他类型的属性绑定,因为我们正在将这个应用程序部署到kubernetes中,并使用kubernetes的配置映射。 所以我们想知道,是否还有其他机会让与一起工作