我目前正在开发一个大量使用JSF和IceFaces的网络应用程序.我们已经讨论过转移到另一个表示层,我想我会把讨论带到SO中,看看专家们的想法.
我很好奇是否有人可以权衡各种Java表示层技术的优缺点.如果你只和一个人一起工作,说出你为什么喜欢或讨厌它.如果您与多个人合作过,请给出他们如何相互叠加的印象.
我们正在考虑的技术是:
如果我遗漏了我的清单中的任何内容,请告诉我.
谢谢!
我正在Haskell的欧拉问题4中尝试.它要求通过乘以两个三位数形成的最大回文.问题很简单,我认为我的Haskell-fu完成了任务,但我得到的结果看起来不一致,至少可以说.
这是我的回文检测器(代码简单本身):
isPalindrome :: String -> Bool
isPalindrome [] = True
isPalindrome str = let str2 = reverse str
in (str2 == str)
Run Code Online (Sandbox Code Playgroud)
从这里开始,这是一个简单的问题,即编写一个函数来检测产品什么时候形成一个回文(并且可能从一个被乘数中减去一个,如果没有,则通过蛮力搜索来递减).这是我非常简化的版本,剥离并返回一个用于调试的IO操作:
findPal :: Integer -> Integer -> IO()
findPal 1 y = putStrLn "reached 1"
findPal x y = let pal = isPalindrome $ show mult
mult = x * y
in case pal of
true -> putStrLn $ "mult is " ++ (show mult)
false -> putStrLn "pal is false"
Run Code Online (Sandbox Code Playgroud)
以下是GHCi中的两个独立输出:
*Main> isPalindrome $ …Run Code Online (Sandbox Code Playgroud) 我正在Maven工作一个小型的多模块项目.我们使用Web Services将UI与数据库层分开,并且由于jaxws-maven-plugin,我们或多或少地为我们处理了WSDL和WS客户端的创建.(该插件本质上是围绕wsgen和wsimport的包装.)到目前为止一切都很好.
当我尝试将WSIT安全性分层到图片中时,问题就来了.NetBeans允许我轻松生成安全元数据,但是wsimport似乎完全无法处理Basic-auth安全级别之外的任何事情.
这是我们当前在Maven构建期间调用wsimport的不安全方式:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>${basedir}/../WebService/target/jaxws/wsgen/wsdl/WebService.wsdl</wsdlUrl>
</wsdlUrls>
<packageName>com.yourcompany.appname.ws.client</packageName>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
<destDir>${basedir}/target/jaxws</destDir>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我尝试过使用xauthFile,xadditionalHeaders,通过args传递javax.xml.ws.security.auth.username和密码.我还尝试从命令行使用wsimport指向Tomcat生成的WSDL,它具有额外的安全信息.但是,似乎没有任何东西可以改变wsimport生成的文件的组成.
所以我想我的问题是,为了获得一个符合WSIT标准的客户端,我是不是完全放弃了Maven和jaxws插件?有没有办法让WSIT客户端自动生成?或者我需要手动生成客户端吗?
如果您需要我在此处撰写的其他信息,请与我们联系.我正在部署到Tomcat,虽然这似乎不是问题,因为Maven似乎很乐意将Metro拉入部署的WAR文件中.
提前致谢!
编辑:经过大量的WSIT游戏,这对我有用.
对于初学者,使用Netbeans生成WSIT客户端.测试它以确保它工作,然后将WSIT配置文件(wsit-client.xml和[您的Web服务名称] .xml)移动到WS客户端项目的META-INF目录.
从安全角度来看,对项目的相关添加是Web服务xml中的标记:
<wsp:Policy wsu:Id="WebPortBindingPolicy">
<wsp:ExactlyOne>
<wsp:All>
<sc:CallbackHandlerConfiguration wspp:visibility="private">
<sc:CallbackHandler default="wsitUser" name="usernameHandler"/>
<sc:CallbackHandler default="changeit" name="passwordHandler"/>
</sc:CallbackHandlerConfiguration>
<sc:TrustStore wspp:visibility="private" location="C:\Apps\apache-tomcat-6.0.24\certs\client-truststore.jks" type="JKS" storepass="changeit" peeralias="xws-security-server"/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Run Code Online (Sandbox Code Playgroud)
显然,这里有一些硬编码的依赖项,我们需要在构建期间进行管理.用户,密码,信任库的位置和peeralias都是开发默认值,并且会随着系统从开发转移到测试和生产而改变.我们正在使用一些不同的策略来管理它,但我们可能最终会在Hudson中设置环境变量以构建每个环境.
摆弄一下Maven的jaxws插件的配置.我们生成WSDL作为构建的一部分,因此我们不需要在本地引用它.这是我们的WS客户端目标中的wsimport命令的插件标记:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>${basedir}/../WebService/target/jaxws/wsgen/wsdl/WebService.wsdl</wsdlUrl>
</wsdlUrls>
<staleFile>${project.build.directory}/jaxws/stale/WebService.stale</staleFile>
<packageName>com.yourcompany.appname.ws.client</packageName>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
<destDir>${basedir}/target/jaxws</destDir>
</configuration>
<id>wsimport-generate-WebService</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个大量使用jQuery选项卡和Ajax的项目.将数据加载到选项卡本身就很简单,但选项卡中的数据需要通过位于选项卡div之外的选择框进行过滤.
这是我的问题开始的地方.假设我的选项卡对URL"tab1.html"进行Ajax调用.jQuery选项卡将此目标更改为类似"#ui-tabs-10"的哈希值,但我可以通过以下代码获取原始URL:
$("#tabs").tabs({
select: function(event,ui) {
var url = $.data(ui.tab, 'load.tabs');
...do stuff with url
}
});
Run Code Online (Sandbox Code Playgroud)
但我似乎无法访问此事件调用之外的ui.tab对象.所以我的选择框更改事件最终看起来像这样:
var urls = {
0 : "tab1.html",
1 : "tab2.html",
2 : "tab3.html"
}
$('#selectBox').change(function(){
var tabs = $("#tabs").tabs();
var id = $('#selectBox').attr("selectedIndex");
var selectedTab = tabs("option", "selected");
var newUrl = urls[selectedTab] + "?id=" + id;
tabs("url", selectedTab, newUrl);
tabs("load", selectedTab);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是哈希映射.我不需要它,它复制了我已经编码到选项卡div本身的信息.
<div id="tabs">
<ul>
<li><a href="tab1.html">tab1</a></li>
<li><a href="tab2.html">tab2</a></li>
<li><a href="tab3.html">tab3</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我已经用尽了Firebug中的文档和DOM树都无济于事.关于如何从标签事件外部检索href的任何想法?
我正在使用jQuery UI 1.7.2版.Muchos gracias提前.你们是最棒的.
我是Haskell的新手,使用Ghci.
我有一个函数,叫做三,我想写成
let three = \x->(\y->(x(x(x y))))
Run Code Online (Sandbox Code Playgroud)
好的,这很有效,但是当我尝试的时候
three (2+) 4
Run Code Online (Sandbox Code Playgroud)
这是行不通的.相反,我得到了一些"无法构造无限类型"的错误.
请帮我.