好的,所以我想创建一个原生应用程序来读取一些环境变量,并根据一些业务逻辑,将它们的值更改为其他内容。我决定在 Kotlin 中做这件事。
通过创建函数,我设法找出了如何更改系统环境变量:
fun call(arg: String) = platform.posix.system(command)
fun setEnvironmentVariable(variable: String, value: String) {
println("Changing value of $variable to $value")
call("SETX $variable $value")
}
Run Code Online (Sandbox Code Playgroud)
但它只会改变值。我想将它存储在 Kotlin 变量中并对其进行一些操作。
发出语句 call("SET $variable") 将值打印到命令提示符,但我不知道如何从 Kotlin 捕获它。我想是否有一种方法可以将命令提示符的输出提取到一个字符串中,这样会更容易,即使 Windows 以 myvariable=myvalue 的形式输出它,而不仅仅是值。
提前致谢
我正在尝试根据 GUI 中其他选项的一些选择,在primefaces 中填充一些带有内容的下拉菜单。这是我正在尝试做的一个简化示例:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" >
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form>
<c:set var="options" value="#{['1','2','3']}" />
<c:set var="currentValue" value="#{3}" />
<h:outputText value="${options}" />
<ui:repeat var="r" value="#{options}">
<h:outputText value="#{r}" />
</ui:repeat>
<c:set var="currentValue" value="#{currentValue}" />
<p:selectOneMenu id="selectValue"
value="${currentValue}"
class="pFieldSet_Template_Input200 r10">
<p:ajax event="change" />
<ui:repeat var="r" value="#{options}">
<f:selectItem itemLabel="Choice #{r} (20180101)" itemValue="#{r}" />
</ui:repeat>
</p:selectOneMenu>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我访问该页面时,它显示 [1, 2, 3]123 和一个空的 selectOneMenu。我本来希望 selectOneMenu 也包含这些选择。迭代显然适用于上述情况,所以我不知道为什么它不显示菜单中的选项。我究竟做错了什么?