在我的例子中有一个selectOneMenu,其中包含af:selectItems-attribute.select-items从我的bean解析如下:
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
我的bean中的方法getSelectItems()看起来像这样:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("Peter");
list.add(obj);
return list;
}
Run Code Online (Sandbox Code Playgroud)
显示的对象是具有属性"name"的简单对象.
在这一点上没什么特别的.但现在我改变我的方法:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("<script>alert('xss is bad');</script>");
list.add(obj);
return list;
}
Run Code Online (Sandbox Code Playgroud)
JavaScript没有被MenuRenderer-Class转义,我的页面显示警报消息.
是否有任何原因导致SelectItem的escape属性的默认值为"false"?我该如何解决这个问题?(我使用Mojarra 2.1.7)
我已经像这样配置了我的WebService:
的applicationContext:
<sws:annotation-driven />
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping" >
<property name="interceptors">
<list>
<bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
</list>
</property>
Run Code Online (Sandbox Code Playgroud)
注意:Interceptor在启动时加载,但是如果请求进来,则不会写任何内容.
我有一个PersonServiceImpl类,方法是addPersonRequest().如果我使用org.dom4j.Element作为方法参数,一切正常;
@Endpoint
public class PersonServiceImpl {
@PayloadRoot(namespace = "http://www.example.org/person/schema", localPart = "AddPersonRequest")
@ResponsePayload
public AddPersonRequest addPersonRequest(@RequestPayload Element element) {
System.out.println(element.asXML());
Person response = new Person();
response.setId(2);
response.setFirstName("Mad");
response.setLastName("Mike");
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改我的方法参数,如下所示(因此应该使用spring-ws的自动编组),request.getFirstName()将打印null.(JAXB2在类路径上).
Person-class使用@XMLType和@XMLRootElement注释.
注意:编组工作正常.
@Endpoint
public class PersonServiceImpl {
@PayloadRoot(namespace = "http://www.example.org/person/schema", localPart = "AddPersonRequest")
@ResponsePayload
public AddPersonRequest addPersonRequest(@RequestPayload Person request, SoapHeader header) {
System.out.println(header.getName());
System.out.println(request.getFirstName());
Person response = new Person();
response.setId(2);
response.setFirstName("Mad");
response.setLastName("Mike"); …Run Code Online (Sandbox Code Playgroud) 有可能在jodatime中计算一个月的周数吗?
我需要这样的东西:
月:七月
月:八月
我知道我可以像这样在joda时间获得一周的一周:
new LocalDate().weekOfWeekYear()
但我不知道如何获得相关日期.
我们假设我有两座建筑,我可以在那里建造不同的单元.建筑物只能同时建造一个单元,但有一个最多5个单元的最后一个单元,它将按顺序构建.每个单元都有构建时间.我需要知道,考虑到已经在建筑物的构建队列中的单位,尽可能快地获得我的单位的最快解决方案.我认为像RoundRobin这样的"着名"算法在这里不起作用.
有没有算法可以解决这个问题?
我最近将我的primefaces项目更新为新版本的primefaces.
一切似乎工作正常,但单击"添加全部"按钮时选项列表非常慢.我在列表中有一个庞大的数据集(大约130个项目).该论坛帖子中也描述了这个问题.
更新: 一个非常基本的例子应该证明问题:
<p:pickList value="#{testForm.dualList}"
var="id"
itemLabel="#{id}"
itemValue="#{id}" />
Run Code Online (Sandbox Code Playgroud)
表单(在会话范围内):
@Component("testForm")
@Scope("session")
public class TestForm implements Serializable {
private DualListModel<Integer> dualList;
//getter & setter methods
}
Run Code Online (Sandbox Code Playgroud)
创建DualListModel的方法:
prepareForm() {
List<Integer> source = Lists.newLinkedList();
List<Integer> target = Lists.newLinkedList();
//add 100 integers as source:
for(int i = 0; i <= 99; i++) {
source.add(i);
}
DualListModel<Integer> model = new DualListModel<Integer>(source, target);
testForm.setDualList(model);
}
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的让它更快?
在我们的应用程序中提供以下工作存储库:
public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {
}
Run Code Online (Sandbox Code Playgroud)
该存储库通过带有URI“ / api / persons”的spring-data-rest公开,并且可以正常工作。
现在,我们想在RestController的方法中重写存储库的后方法:
@RestController
@RequestMapping("/persons")
public class PersonController {
@RequestMapping(value = "/**", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> savePerson(@RequestBody Person person) {
//do something fancy
return "it works";
}
Run Code Online (Sandbox Code Playgroud)
如果我们将数据发布到“ / api / persons”,则将调用PersonController的方法,但是PersonRepository的任何方法(例如GET)都无法通过rest访问。我们不断收到405错误和以下异常:
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
Run Code Online (Sandbox Code Playgroud)
经过一番摸索之后,我们发现,如果我们将@RequestMapping批注的值属性更改为:
value="/**"
Run Code Online (Sandbox Code Playgroud)
至
value="/save"
Run Code Online (Sandbox Code Playgroud)
阅读此问题和链接的文档后,如果值属性为“ / **”,则它也应该起作用
我如何简单地删除并实时添加div?并且我已经在页面上手动创建了div,因此即使第一次运行该函数它也将被删除.div被称为'testElem'
我尝试着:
var remDiv = document.getElementById('testElem');
document.body.removeChild(remDiv);
var divTag = document.createElement("div");
divTag.id = "testElem";
document.body.appendChild(divTag);
Run Code Online (Sandbox Code Playgroud)
但脚本不起作用.我尝试在第一个remDiv之后放置一个"警报"进行测试.但它甚至没有超过那里.代码中断了.在chrome我尝试使用工具> Javascript控制台,但没有错误.有没有更好的方法来调试JavaScript,所以我可以看到错误是什么?
我只是想这样做,所以它会在每次运行函数时删除div中的内容,因此内容不会加倍.每次都不一样.
html ×2
javascript ×2
jsf ×2
spring ×2
algorithm ×1
highcharts ×1
java ×1
jodatime ×1
jquery ×1
jsf-2 ×1
mojarra ×1
primefaces ×1
rest ×1
spring-ws ×1
web-services ×1
xss ×1