我在单独的文件中创建了两个模型State和City.在该州进口城市.
州内可以有一系列城市.
以下代码工作正常.
State.js
let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(PropTypes.shape(City))
});
Run Code Online (Sandbox Code Playgroud)
City.js
let City = PropTypes.shape({
name: React.PropTypes.string,
population: PropTypes.number
});
Run Code Online (Sandbox Code Playgroud)
但是,当我重写citiesas时
let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(City)
});
Run Code Online (Sandbox Code Playgroud)
它给了我警告.
摘要:
cities: PropTypes.arrayOf(PropTypes.shape(City)) 作品.
cities: PropTypes.arrayOf(City) 没有.
它给了我以下警告:
Warning: Failed propType: Property xx of component Xx has invalid PropType notation inside arrayOf. Check the render method of Yy.
我的问题是,City是Proptypes.shape,为什么我需要再提Proptypes.shape(City)一次Proptypes.arrayOf?
我是 Nix 的新手,正在努力掌握 Nix 的交叉编译概念。据我了解,可以访问 Nix 包中的 stdenv.hostPlatform 和 buildPlatform 属性,并相应地选择库和工具。
但是我对两件事感到困惑:
我阅读了 nix 文档(https://nixos.org/manual/nixpkgs/stable/#chap-cross),但是无法回答上述两个问题。
任何帮助或指示将不胜感激。
我做了一些尝试:
我原来的代码
{cmake, stdenv, gcc, coreutils, bar, git, doxygen, lib}:
stdenv.mkDerivation rec {
pname = "foo";
version = "1.0";
src = ./foo;
buildInputs = [ bar ];
nativeBuildInputs = [ cmake doxygen ];
strictDeps = true;
configurePhase = ''
cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=$src/tools/toolchains/mytoolchain.cmake .
'';
installPhase = '' …Run Code Online (Sandbox Code Playgroud) 我环顾四周,无法找到解决方案.
我正在使用Omnifaces listConverter的PickList组件Primefaces.当我将物品从SOURCE移动到TARGET时.在支持bean中,我只获得新项目dualList.getTarget().
但是当我将物品从TARGET移动到SOURCE时.在支持bean中,我无法检查是否已从TARGET中删除了某个项目.
我试过dualList.getSource()- SOURCE不包含从TARGET中删除的项目.
当然,dualList.getTarget()将为空(假设没有项目从SOURCE移动到TARGET).
我的问题是如何才能在支持bean中发现某些内容已从TARGET转移到SOURCE?
以前我已经创建了一个自定义转换器,在那里,我dualList.getTarget()给了我更新的目标(即旧值+添加的新值+删除旧值).因此,我可以弄清楚哪些值被添加,删除并仍然存在.
但在使用Omnifaces listConverter时我并不了解如何实现它.
我的代码看起来像这样:
XHTML
<p:pickList id="pickList" value="#{assignBenchmarkersBean.dualUserList}"
var="users" itemLabel="#{users.username}" itemValue="#{users}" >
<o:converter converterId="omnifaces.ListConverter"
list="#{assignBenchmarkersBean.dualUserList.source}" />
</p:pickList>
<p:commandButton id="update" value="#{bundle.create}"
styleClass="redButton bigFont"
actionListener="#{assignBenchmarkersBean.update()}" />
Run Code Online (Sandbox Code Playgroud)
豆
public void update(){
try{
prepareRemoveOldAndAddNewUsersList();
/**some other code **/
}catch(Exception e){
FacesMsg.error(ErrorMessage.UPDATE.getValue(), e);
} …Run Code Online (Sandbox Code Playgroud)