@ModelAttribute
Spring MVC 的目的和用途是什么?
我有像下面的数据列表 -
<input id="name" list="allNames" />
<datalist id="allNames">
<option value="Adnan1"/>
<option value="Faizan2"/>
</datalist>
Run Code Online (Sandbox Code Playgroud)
我想要的是,当一个项目被完全输入时(例如在用户完全键入"Adnan1"时输入框中)或从列表中选择,那么我想要一个事件.我尝试了几种方法,但到目前为止两种方法都没有帮助我.方法是 -
$("#name").change(function(){
console.log("change");
}
Run Code Online (Sandbox Code Playgroud)
问题是,当输入失焦时,事件才会被触发,即当我点击屏幕中的某个位置时.
我也试过了
$("#name").bind('change', function () {
console.log('changed');
});
Run Code Online (Sandbox Code Playgroud)
但每次输入时都会触发回调.实际上,当项目被完全选中时,我需要进行AJAX调用.通过输入或从下拉列表中选择.
第一种方法对于用户的观点是不好的,因为他必须进行额外的点击,而第二种方法的缺点是每个字母都会触发一个事件.
我想要的只是当用户做出选择或输入完整句子时的事件.有没有办法实现这个目标?我遗失的任何事件都可以解决我的问题.
我有一个列表,我需要自定义排序,然后转换为具有其Id与名称映射的地图.
这是我的代码:
Map<Long, String> map = new LinkedHashMap<>();
list.stream().sorted(Comparator.comparing(Building::getName)).forEach(b-> map.put(b.getId(), b.getName()));
Run Code Online (Sandbox Code Playgroud)
我认为这将完成这项工作,但我想知道我是否可以避免LinkedHashMap
在这里创建并使用花哨的函数式编程来完成一行中的工作.
我在Joiner中要求能够使用前缀和后缀元素.
例如
String str[] = {"a", "b", "c"};
Joiner.on(",").prefix("'").suffix("'").join(str);
Run Code Online (Sandbox Code Playgroud)
预期产出将是:
'a','b','c'
Run Code Online (Sandbox Code Playgroud)
我们有替代方案吗?因为番石榴不这样做(或者我不知道).使用java 8有更好的选择吗?
我非常满意Spark 2.0 DataSet,因为它的编译时类型安全.但是这里有几个我无法解决的问题,我也没有找到好的文档.
问题#1 - 在聚合列上划分操作 - 考虑下面的代码 - 我有一个DataSet [MyCaseClass],我想在c1,c2,c3和sum(c4)/ 8上groupByKey.如果我只是计算sum但它给出了除(8)的编译时错误.我想知道如何实现以下目标.
final case class MyClass (c1: String,
c2: String,
c3: String,
c4: Double)
val myCaseClass: DataSet[MyCaseClass] = ??? // assume it's being loaded
import sparkSession.implicits._
import org.apache.spark.sql.expressions.scalalang.typed.{sum => typedSum}
myCaseClass.
groupByKey(myCaseClass =>
(myCaseClass.c1, myCaseClass.c2, myCaseClass.c3)).
agg(typedSum[MyCaseClass](_.c4).name("sum(c4)").
divide(8)). //this is breaking with exception
show()
Run Code Online (Sandbox Code Playgroud)
如果我删除.divide(8)操作并运行上面的命令它会给我低于输出.
+-----------+-------------+
| key|sum(c4) |
+-----------+-------------+
| [A1,F2,S1]| 80.0|
| [A1,F1,S1]| 40.0|
+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)
问题#2 - 将groupedByKey结果转换为另一个Typed DataFrame - 现在问题的第二部分是我想再次输出一个类型化的DataSet.为此,我有另一个案例类(不确定是否需要),但我不确定如何映射分组结果 -
final case class AnotherClass(c1: String,
c2: …
Run Code Online (Sandbox Code Playgroud) 我有
class CustomObject {
Integer day;
List<InnerObject> innerObjects;
///getter setter
}
class InnerObject {
String id;
List<String> someVal;
//getter setter
}
Run Code Online (Sandbox Code Playgroud)
我有一个
List<CustomObject>
而且我要
Table<String, Integer, List<String>>
我希望表代表id (from InnerObject)
- >(day (from Custom object)
,List of someVal (from InnerObject)
为了使它干净我调整了一点名称,但结构与预期相同.
现在我的表现如何
final List<CustomObject> objects = ???
final Map<Integer, List<InnerObject>> dayVsInnerObjects = objects.stream()
.collect(toMap(CustomObject::getDay, CustomObject::getInnerObjects));
final Table<String, Integer, List<String>> table = HashBasedTable.create();
dayVsInnerObjects.forEach((day, innerObjects) ->
innerObjects.forEach(i -> {
table.put(i.getId(), day, i.getSomeVal());
})
);
Run Code Online (Sandbox Code Playgroud)
我的问题:
所以我有 -
timezone = pytz.timezone('Asia/Kolkata')
one_time_stamp = '2017-06-01 05:30:00'
zoned_time_stamp = datetime.datetime.strptime(one_time_stamp, '%Y-%m-%d %H:%M:%S')
#This outputs 2017-06-01 05:30:00 which is fine.
print(zoned_time_stamp)
#notice timezone added
non_iso_zoned_ts = zoned_time_stamp.replace(microsecond=0, tzinfo=timezone)
# This outputs 2017-06-01 05:30:00 which is fine.
print(zoned_time_stamp)
iso_date = non_iso_zoned_ts.isoformat()
#This outputs 2017-06-01T05:30:00+05:53 which is incorrect. Ideally it should be 2017-06-01T05:30:00+05:30
print(iso_date)
Run Code Online (Sandbox Code Playgroud)
现在我想知道为什么 isoformat 添加了 05:53 的偏移量,而亚洲/加尔各答时区是 +05:30。参考 - https://www.zeitverschiebung.net/en/timezone/asia--kolkata
我有一个场景.
@Entity
@Table(name = "someTable")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Access(AccessType.FIELD)
@DiscriminatorColumn(name = "someDisc")
public abstract class AbstractClass{}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
@Access(AccessType.FIELD)
@DiscriminatorValue("1")
public class Child1 extends AbstractClass{
}
@Entity
@Access(AccessType.FIELD)
@DiscriminatorValue("2")
public class Child2 extends AbstractClass{
}
Run Code Online (Sandbox Code Playgroud)
现在在第3个表中我想要这样的东西
@Entity
@Table
public class ThridTable{
@OneToMany(cascade = CascadeType.ALL, fetch = EAGER, orphanRemoval = true)
@JoinColumn(name = "foreinKeyCol", nullable = false)
@OrderColumn(name = "orderCol")
private List<Child2> child2 = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL, fetch = EAGER, orphanRemoval = true)
@JoinColumn(name = "foreinKeyCol", nullable = false) …
Run Code Online (Sandbox Code Playgroud) 这是我的用例.
1.我有一个"客户名称"文本字段和"所有客户"单选列表.
2.问题解决后,我想选择"客户名称"中的值,并希望添加"所有客户".
我能够实现这一目标如果要添加的值已经存在于"所有客户"中.但是我希望在"所有客户"字段中填入新值(如果它尚未出现),以便将来可供选择.这该怎么做?有可能这样做吗?
看代码
public class AdnanTestClass<T> {
public void doForTest(Object o){
if (o instanceof TestInnerClass){
}
}
private class TestInnerClass{
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码在doForTest
方法中给出了编译时错误.它说非法的仿制药类型.
如果我用这样的外类限定内部类
if (o instanceof AdnanTestClass.TestInnerClass){
}
Run Code Online (Sandbox Code Playgroud)
这个编译完全没问题.
if (o instanceof TestInnerClass)
如果我<T>
从我的班级声明中删除也会有效.
我不确定我在这里失踪了什么.是否存在符合外部资格的潜在问题.有人可以指出吗?我用intellij idea 14和Java 8做了这个测试.
我有一个接口,只能被枚举覆盖 -
interface Parent{
int someMethod();
}
Run Code Online (Sandbox Code Playgroud)
以及我要传递Parent的实现者的方法.此方法希望限制用户传递除枚举之外的任何其他实现者 -
public static <T extends Enum<? extends Parent>> T fromInt(Class<T> enumClass){}
Run Code Online (Sandbox Code Playgroud)
现在的问题是
?
.为了访问someMethod
父类,需要在方法中输入类型.如果我们想像这样访问它 -
Arrays.stream(enumClass.getEnumConstants())
.filter(ev -> ((Parent)ev).someMethod() == someVal)
.findFirst().get();
Run Code Online (Sandbox Code Playgroud)是否有更好的方法来创建此方法的签名来解决这些问题?
在我的主程序中,我收到类似 - key1=value1 key2=value2 的输入
现在我想要的是用它创建一个地图。我知道执行此操作的命令式方法,我将获得可以 foreach 的 Array[String],然后用“=”分割,然后可以使用键和值来形成 Map。
有没有一种好的功能性和可读性的方法来实现这一点?另外,如果我可以避免可变映射并且我想避免初始虚拟值初始化,那就太好了。
def initialize(strings: Array[String]): Unit = {
val m = collection.mutable.Map("dummy" -> "dummyval")
strings.foreach(
s => {
val keyVal:Array[String] = s.split("=")
m += keyVal(0) -> keyVal(1)
})
println(m)
}
Run Code Online (Sandbox Code Playgroud) 我遇到了这个问题,因此将其作为完整解决方案发布 -
使用Java 8,以下代码将失败并出现运行时异常.问题是getInteger方法返回一个通用的Integer类型,print方法需要精确的Object Type.
public static void main(String[] args) {
print(getInteger());
}
private static <T> T getInteger() {
return (T)new Integer(10);
}
private static void print(Object...o1){
for(Object o: o1){
System.out.println(o);
}
}
Run Code Online (Sandbox Code Playgroud) java ×7
java-8 ×3
guava ×2
scala ×2
annotations ×1
apache-spark ×1
collections ×1
enums ×1
generics ×1
google-api ×1
hibernate ×1
html ×1
java-ee ×1
javascript ×1
jira ×1
jira-plugin ×1
jpa ×1
jquery ×1
lambda ×1
python ×1
pytz ×1
spring-mvc ×1