小编rtp*_*son的帖子

各种Java Web表示层技术的优缺点

我目前正在开发一个大量使用JSF和IceFaces的网络应用程序.我们已经讨论过转移到另一个表示层,我想我会把讨论带到SO中,看看专家们的想法.

我很好奇是否有人可以权衡各种Java表示层技术的优缺点.如果你只和一个人一起工作,说出你为什么喜欢或讨厌它.如果您与多个人合作过,请给出他们如何相互叠加的印象.

我们正在考虑的技术是:

  • ICEfaces的
  • JSF(没有IceFaces)
  • GWT(谷歌网络工具包)
  • 便门
  • 挂毯

如果我遗漏了我的清单中的任何内容,请告诉我.

谢谢!

java presentation-layer java-ee

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

Haskell中的Euler问题 - 有人能发现我的错误

我正在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)

haskell

8
推荐指数
2
解决办法
378
查看次数

WSIT,Maven和wsimport - 他们可以一起工作吗?

我正在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)

maven-2 web-services jax-ws maven-plugin wsit

6
推荐指数
1
解决办法
8297
查看次数

从jQuery-UI选项卡获取目标URL

我正在开发一个大量使用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提前.你们是最棒的.

jquery jquery-ui jquery-ui-tabs

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

如何使用ghci在lambda中编写数字

我是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)

这是行不通的.相反,我得到了一些"无法构造无限类型"的错误.

请帮我.

haskell ghci

0
推荐指数
1
解决办法
807
查看次数