我正在使用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)
任何帮助表示赞赏
我正在编写一个涉及与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) 我正在使用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.我可以对类型参数做些什么来使这个方法只接受相同类型的两个边?
我正在使用带有脚本化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 ×2
scala ×2
birt ×1
dom ×1
gwt ×1
javascript ×1
reporting ×1
scalaz ×1
shapeless ×1
validation ×1