小编tri*_*rNZ的帖子

Scalaz验证:将验证序列转换为单个验证

我正在使用scalaz验证,并有一些代码来验证产品.

def validateProduct(product: Option[Product]): ValidationNel[String, Product] = ???
Run Code Online (Sandbox Code Playgroud)

给定一个产品列表,我希望得到一个包含整个列表的验证作为成功值或验证错误列表.似乎某种折叠应该这样做,但我不确定组合功能应该是什么.

 def validateProducts(products: Seq[Option[Product]]): ValidationNel[String, Seq[Product]] = {
    val listOfValidations: Seq[ValidationNel[String, Product]] = products.map(validateProduct _)
    val validatedList:ValidationNel[Seq[String], Seq[Product]] = ??? // what to do here?
    ???
  }
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

validation scala scalaz

14
推荐指数
2
解决办法
2679
查看次数

将GWT事件挂钩到外部iframe中的元素上

我正在编写一个涉及与iframe中的外部文档交互的GWT应用程序.作为概念证明,我试图将一个点击处理程序附加到一个按钮.

以下适用于javascript

var iframe = document.getElementById("rawJSIFrame");
var doc = iframe.contentDocument;
var body = doc.body;
var button = doc.getElementsByTagName("input").namedItem("submit");
button.onclick = function() {
    alert("Clicked!");
};
Run Code Online (Sandbox Code Playgroud)

试图在GWT中做同等的事情,我做了以下事情:

public void addClickHandlerToSubmitButton(String buttonElementName, ClickHandler clickHandler) {
    IFrameElement iframe = IFrameElement.as(frame.getElement());
    Document frameDocument = getIFrameDocument(iframe);
    if (frameDocument != null) {
        Element buttonElement = finder(frameDocument).tag("input").name(buttonElementName).findOne();
        ElementWrapper wrapper = new ElementWrapper(buttonElement);
        HandlerRegistration handlerRegistration = wrapper.addClickHandler(clickHandler);
    }
}

private native Document getIFrameDocument(IFrameElement iframe)/*-{
        return iframe.contentDocument;
}-*/;
Run Code Online (Sandbox Code Playgroud)

以下是ElementWrapper类:

public class ElementWrapper extends Widget implements HasClickHandlers {

    public ElementWrapper(Element theElement) …
Run Code Online (Sandbox Code Playgroud)

javascript java gwt dom event-handling

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

无形HList类型检查

我正在使用Shapeless并使用以下方法计算两个HLists之间的差异:

  def diff[H <: HList](lst1: H, lst2:H):List[String] = (lst1, lst2) match {
    case (HNil, HNil)                 => List()
    case (h1::t1, h2::t2) if h1 != h2 => s"$h1 -> $h2" :: diff(t1, t2)
    case (h1::t1, h2::t2)             => diff(t1, t2)
    case _                            => throw new RuntimeException("something went very wrong")
  }
Run Code Online (Sandbox Code Playgroud)

由于该方法的两个参数都采用了H,我希望不同类型的HLists不能在这里编译.例如:

diff("a" :: HNil, 1 :: 2 :: HNil)
Run Code Online (Sandbox Code Playgroud)

不应该编译,但确实如此,它会产生运行时错误:java.lang.RuntimeException: something went very wrong.我可以对类型参数做些什么来使这个方法只接受相同类型的两个边?

scala type-level-computation shapeless

9
推荐指数
2
解决办法
1216
查看次数

在java中编写脚本化BIRT数据源时访问参数

我正在使用带有脚本化POJO数据源的BIRT报告,并且无法访问报告参数.我用Java编写所有内容,而不是javascript.代码如下:

public class StockDataSetHandler extends ScriptedDataSetEventAdapter {
 ...

 @Override
 public void open(IDataSetInstance dataSet) {
  count = 0;
  StockDaoMock mockStockDao = new StockDaoMock();
  //The code below works in javascript. How can I do the equivalent
  //in Java? Where do I get params from?
  String paramValue = params["myparameter"];
  stockData = mockStockDao.getStockValues(paramValue);
 }
}
Run Code Online (Sandbox Code Playgroud)

BIRT的文件是指params集合.我如何在Java中掌握它?

干杯

java reporting birt

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