小编Joh*_*uer的帖子

在xml序列化期间忽略属性,但在反序列化期间不忽略

在C#中,如何在序列化期间使XmlSerializer忽略属性,而不是在反序列化期间忽略属性?(或者我如何对Json.net做同样的事情?)

要阻止属性序列化,可以添加XmlIgnore属性:

[XmlIgnore]
public int FooBar {get;set;}
Run Code Online (Sandbox Code Playgroud)

这将导致<FooBar>在序列化期间省略标记.

但是,这也意味着<FooBar>在反序列化期间将忽略标记.

在我的例子中,我在请求中接受来自用户的一系列项目,并且对于每个项目,如果用户想要添加,修改或删除项目,则可以指定动作属性.我想为GET列表调用使用相同的模型对象,并且不想返回此action属性.我希望这是一个很常见的情况.

另一个用例:说你有一个圆形对象

public class Circle
{
    public double Radius { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并修改它以添加直径属性

public class Circle2
{
    public double Diameter { get; set; }
    public double Radius { get { return Diameter / 2; } set { Diameter = value*2; } }
}
Run Code Online (Sandbox Code Playgroud)

您可能只想序列化直径,但仍能够以旧格式反序列化仅包含半径的xml文件.

我做了我的研究并没有找到任何东西,因此这个问题

解决方案:我找到了解决方案.我可以在此MSDN文档中添加一个始终返回false的ShouldSerialize属性

(如果重新打开此问题,可以将此解决方案添加为实际答案)

.net c# xml-serialization json.net deserialization

49
推荐指数
2
解决办法
4万
查看次数

如何强制Vaadin更新屏幕?

我有一个小的Vaadin应用程序,它有几个输入字段(组合框,选择组等...).其中大部分内容由第一个ComboBox的所选内容决定.但是,当我选择其中的内容时,所有其他内容都保持空白,直到我点击一个,此时它们都会更新.这不是期望的行为,但我认为它是由服务器端是最新的但不更新客户端视图引起的.(即使在我的第一个Combobox的ValueChangeListener中添加requestRepaint())

必须有一些方法强制Vaadin获取我希望它显示的数据,即使没有点击其他组件?

编辑我不允许这么快就回答我自己的问题,所以我暂时把它放在这里:

我发现有一个javascript方法可以同步客户端和服务器.

myComponent.getApplication().getMainWindow().executeJavaScript("javascript:vaadin.forceSync();");
Run Code Online (Sandbox Code Playgroud)

我现在唯一的问题是,当我点击另一个组合框(或两次相同的组合框)时,我的一个组合框上的ValueChangeListener仍然只会触发.这是最奇怪的事情,因为第二个组合框在装载时会完美地发射它的事件.

java vaadin

17
推荐指数
2
解决办法
4万
查看次数

为什么Java中的List.of()不返回类型化的不可变列表?

List.of(E... elements)java中的方法返回的列表确实返回了一个不可变的列表,但是通过查看所创建的列表根本看不到该列表。创建的列表只是抛出一个异常,而不是根本没有显示更改列表的可能性。我的意思是,那List.of(E... elements)应该返回一个ImmutableListthat extends List。这样,用户可以决定他是否愿意显示这种不变性的事实。但是我没有发现有人抱怨或显示其他解决方案。默认情况下,甚至Guava和Apache Commons也不会这样做。只有Guava才有可能创建它(尽管有很多代码):

List<String> list = new ArrayList<String>(Arrays.asList("one", "two", "three"));
ImmutableList<String> unmodifiableList = ImmutableList.<String>builder().addAll(list).build();
Run Code Online (Sandbox Code Playgroud)

但是,即使此类也具有(不建议使用)addremove方法。

谁能告诉我为什么没人关心这个(看似基本的)问题?

java collections apache-commons guava

2
推荐指数
1
解决办法
146
查看次数