我遇到了一个奇怪的案子.在给定的数据库中,我得到了一个包含VARCHAR字段的记录,所以在我的实体模型中我添加了这个字段,加上getter和setter.现在是乐趣开始的地方:
下面的字符串实际上是方法的主体.它看起来像这样:
if (score <= 0.7) {return 0;} else if (score <=0.8) {return 1;} else if (score <=0.9) {return 2;} else {return 3}
Run Code Online (Sandbox Code Playgroud)
现在 - 我需要将这个字符串变成一个方法,说实话我不知道如何实现这一点.这个实际的方法需要从我得到一个得分为double,并根据给定的分数返回一个整数值.
任何人?
我知道最简单的方法是不使用这样的解决方案,但这不是我的电话,此外,数据库中有大量这样的记录,每条记录都不同.我们无法解决这个问题.我必须处理这个问题 - 所以请求解决方案的想法,我保证我会做所有的讨厌,并说这是愚蠢的:)
相信我,我,我做,我会抱怨相当一些时间.
我的应用程序是管理软件,为了方便用户,我想让他们打开多个标签,一次更改多个记录的参数.但在完成他们正在做的任何事情之后,标签保持打开状态,我得到了一些抱怨.基本上我的问题是:
如果有办法关闭浏览器选项卡,发送请求到我的支持bean中的方法?例如:
JSF页面:
<h:commandButton value="Public score"
action="#{assignmentBean.publicSelected()}">
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
豆法:
public void publicSelected() {
application.setAssignmentStatus(done);
dataAccess.mergeEntity(application);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在合并命令后添加一些东西并关闭激活方法的浏览器选项卡?感谢帮助
完整的解决方案代码我很难混合使用JS和JSF,所以对于任何一个也不好的人我都会使用Tiago Vieira Dos Santos提示发布完整的代码解决方案.
现在我的按钮代码如下所示:
<h:commandButton value="Public score"
action="#{myBean.doThings}">
<f:ajax execute="@this" onevent="pop"/>
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
加上页面底部我添加了如下代码:
<script type="text/javascript">
function pop(data){
if(data.status == "success"){
window.close();
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
现在在方法完成后必须完成的操作窗口关闭.
我有一个像这样结构的集合:
@Entity
public class RRR{
private Map<XClas, YClas> xySets;
}
Run Code Online (Sandbox Code Playgroud)
并XClas有一个叫做的字段ZZZ
我的问题是:我想将它与lambda聚合得到一个Map<ZZZ, List<RRR>>.
可能吗?现在我坚持:
Map xxx = rrrList.stream().collect(
Collectors.groupingBy(x->x.xySets().entrySet().stream().collect(
Collectors.groupingBy(y->y.getKey().getZZZ()))));
Run Code Online (Sandbox Code Playgroud)
但它Map<Map<ZZZ, List<XClas>>, List<RRR>>不是我想要的:)
现在只是为了让它工作,我用两个嵌套循环进行聚合,但如果你可以帮我用lambdas完成它,它会非常棒.
编辑
据我所知,我发布了现在的内容.我已经离开了嵌套循环,并且我设法工作到这一点:
Map<ZZZ, List<RRR>> temp;
rrrList.stream().forEach(x -> x.getxySetsAsList().stream().forEach(z -> {
if (temp.containsKey(z.getKey().getZZZ())){
List<RRR> uuu = new LinkedList<>(temp.get(z.getKey().getZZZ()));
uuu.add(x);
temp.put(z.getKey().getZZZ(), uuu);
} else {
temp.put(z.getKey().getZZZ(), Collections.singletonList(x));
}
}));
Run Code Online (Sandbox Code Playgroud)
提前致谢
我正在尝试获取InputStream托管豆中的PNG文件,如下所示:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
InputStream input = externalContext.getResourceAsStream("/myFile.png");
// input is null.
Run Code Online (Sandbox Code Playgroud)
但是,InputStream始终为null。这是怎么引起的,我该如何解决?
h:inputText我的应用程序有问题。有些字段可能需要有些不需要,我想为所有字段创建一个自定义验证器,但找不到如何检查验证器类的信息,是否需要 UIComponent。
这是输入字段代码的样子:
<h:inputText styleClass="form-control"
disabled="#{cc.attrs.bean.disableAnswerPosibility(cc.attrs.answer)}"
value="#{cc.attrs.freeAnswer}"
requiredMessage="#{msg.fieldRequired}"
a:requiredForValidator="#{cc.attrs.question.optional}"
required="#{cc.attrs.question.optional}">
<f:validator validatorId="stringValidator"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试将此信息作为传递参数传递。它在网页上呈现为真/假,但是当我尝试在验证器类中获取它时,它是某种类型的对象,没有在网页源中显示的值,但带有来自 .xhtml 文件的代码。
这是代码:
Object temp = uiComponent.getPassThroughAttributes().get("requiredForValidator");
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
我只需要值 - 布尔值或字符串。有什么建议?