小编Jav*_*avi的帖子

在Spring中启动时执行方法

当应用程序第一次启动时,是否有任何Spring 3功能可以执行某些方法?我知道我可以设置一个带@Scheduled注释的方法,它只是在启动后执行,但它会定期执行.

java spring

168
推荐指数
7
解决办法
22万
查看次数

通过反射调用吸气剂的最佳方式

我需要获取具有特定注释的字段的值,因此使用反射我可以获得此字段对象.问题是这个字段将永远是私有的,虽然我事先知道它总是有一个getter方法.我知道我可以使用setAccesible(true)并获取其值(当没有PermissionManager时),但我更喜欢调用其getter方法.

我知道我可以通过查找"get + fieldName"找到该方法(虽然我知道例如布尔字段有时被命名为"is + fieldName").

我想知道是否有更好的方法来调用这个getter(许多框架使用getters/setters来访问属性,所以也许他们以另一种方式做).

谢谢

java reflection getter

122
推荐指数
3
解决办法
11万
查看次数

绑定@RequestParam中的列表

我以这种方式从表单发送一些参数:

myparam[0]     : 'myValue1'
myparam[1]     : 'myValue2'
myparam[2]     : 'myValue3'
otherParam     : 'otherValue'
anotherParam   : 'anotherValue' 
...
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过添加一个参数来获得控制器方法中的所有参数

public String controllerMethod(@RequestParam Map<String, String> params){
    ....
}
Run Code Online (Sandbox Code Playgroud)

我想将参数myParam [](而不是其他的)绑定到列表或数组(保持索引顺序的任何东西),所以我尝试使用如下语法:

public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){
    ....
}
Run Code Online (Sandbox Code Playgroud)

public String controllerMethod(@RequestParam(value="myParam") String[] myParams){
    ....
}
Run Code Online (Sandbox Code Playgroud)

但它们都没有约束myParams.即使我向地图添加了一个值,它也无法绑定参数:

public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){
    ....
}
Run Code Online (Sandbox Code Playgroud)

是否有任何语法将一些参数绑定到列表或数组而不必创建一个具有列表属性的@ModelAttribute对象?

谢谢

java data-binding collections spring spring-mvc

116
推荐指数
6
解决办法
18万
查看次数

在PostgreSQL的范围内获取日期列表

我想在PostgreSQL数据库中获取两个日期(包括它们)之间的日期列表.例如,如果我有:

  • 开课日期:2012年6月29日
  • 截止日期:2012年7月3日

那么结果应该是:

29 june 2012
30 june 2012 
1 july 2012 
2 july 2012 
3 july 2012
Run Code Online (Sandbox Code Playgroud)

在PostgreSQL中执行此操作的最佳方法是什么?

谢谢.

sql postgresql date date-comparison

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

JSP中存在Checking属性

我有一些扩展超类的类,在JSP中我想展示这些类的一些属性.我只想制作一个JSP,但我事先并不知道该对象是否具有属性.所以我需要一个JSTL表达式或一个标签来检查我传递的对象是否具有此属性(类似于javascript中的运算符,但在服务器中).

<c:if test="${an expression which checks if myAttribute exists in myObject}">
    <!-- Display this only when myObject has the atttribute "myAttribute" -->
    <!-- Now I can access safely to "myAttribute" -->
    ${myObject.myAttribute}
</C:if>
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这个?

谢谢.

jsp jstl jsp-tags

42
推荐指数
3
解决办法
7万
查看次数

NumberFormat中的小数分隔符

给定一个locale java.text.NumberFormat:

NumberFormat numberFormat = NumberFormat.getInstance();
Run Code Online (Sandbox Code Playgroud)

如何在该数字格式中将用作十进制分隔符的字符(如果它是逗号或点)?如何在不使用新的DecimalFormat(格式)的情况下修改此属性?

谢谢

java locale number-formatting

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

如何处理MaxUploadSizeExceededException

MaxUploadSizeExceededException当我上传大小超过允许的最大值的文件时,会出现异常.我想在出现此异常时显示错误消息(如验证错误消息).如何在Spring 3中处理此异常以执行此类操作?

谢谢.

java forms spring file-upload spring-mvc

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

发送电子邮件时主题编码问题

我正在发送一封电子邮件,但我正确地收到了该邮件,但该主题的编码不正确.我发送"invitación"但我收到"invitaci?n".消息内容正常.

当主题在String变量中设置时,消息的内容来自Velocity Template的转换.

我已经google了,我看到有人说MimeUtility.encodeText()可以解决问题,但我没有成功.

我该如何解决这个问题?这是我到目前为止的代码.

String subject = "Invitación";
String msgBody = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/vmTemplates/template.vm", "UTF-8", model);

Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);

try {
    String encodingOptions = "text/html; charset=UTF-8";
    Message msg = new MimeMessage(session);
    msg.setHeader("Content-Type", encodingOptions);
    msg.setFrom(new javax.mail.internet.InternetAddress(emailFrom));
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));

    msg.setSubject(subject);
    msg.setContent(msgBody, encodingOptions);
    Transport.send(msg);

    } catch (AddressException e) {
        ...
    } catch (MessagingException e) {
        ...
    } 
Run Code Online (Sandbox Code Playgroud)

谢谢

java google-app-engine encoding velocity jakarta-mail

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

Spring中的ConversionService

我在Spring应用程序中遵循此方案.

  1. 请求被发送到服务器,其中包含对象的id以及要在此对象中填充的其他一些参数
  2. 具有此id的对象从数据库加载
  3. 在此对象中调用getter和setter以填充值
  4. 然后存储该对象

我在另一个问题中询问,在填充请求的参数之前,准备对象的最佳方法是什么.答案是最好的方法是使用转换服务,而不是在@ModelAtribute注释方法中或在initBinder中使用编辑器.

所以我试图使用转换器,但我没有找到类似的例子,我有点卡住了.我编写了如下代码:在init binder中我注册了转换服务.因此,在填充User对象上的值之前,会调用convert()方法从数据库加载对象.问题是这个配置不起作用,因为它将对象用户的id(用户名字段)转换为Object用户,但是它尝试用对象创建一个setUsername(),所以我得到一个"java.lang" .IllegalArgumentException:参数类型不匹配".

任何人都可以给我一个线索或使用ConversionService获得所需行为的方式的示例吗?

谢谢.

@Autowired
private ConversionService conversionService;

@InitBinder("user")
public void initBinder(@RequestParam("username")String username, WebDataBinder binder){
    binder.setConversionService(conversionService);
}

@RequestMapping(value="/user/save", method=RequestMethod.POST)
public String save(@ModelAttribute("user") User user, Model model) {        
    ...
}
Run Code Online (Sandbox Code Playgroud)

有类似的东西:

@Component
public class UserConversionService implements ConversionService{
    ...        
    @Override
    public Object convert(Object name, TypeDescriptor arg1, TypeDescriptor arg2) {
        return userService.find((String)name); 
    }
}
Run Code Online (Sandbox Code Playgroud)

java data-binding spring converter spring-mvc

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

大对象可能无法在自动提交模式下使用

我有一个Spring应用程序,它在PostgreSQL数据库上使用Hibernate.我正在尝试将文件存储在数据库的表中.它似乎将行存储在文件中(我只是在EntityManager上使用persist方法),但是当从数据库加载对象时,我得到以下异常:

org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
Run Code Online (Sandbox Code Playgroud)

要加载数据,我正在使用MultipartFile瞬态属性,并在其setter中设置我想要保留的信息(byte [],fileName,size).我坚持的实体看起来像这个(我已经省略了其余的getter/setter):

@Entity
@Table(name="myobjects")
public class MyClass {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
    @SequenceGenerator(name="sequence", sequenceName="myobjects_pk_seq", allocationSize=1)
    @Column(name="id")
    private Integer id;

    @Lob
    private String description;

    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;

    @Transient
    private MultipartFile multipartFile;

    @Lob
    @Basic(fetch=FetchType.LAZY, optional=true)
    byte[] file;

    String fileName;

    String fileContentType;

    Integer fileSize;

    public void setMultipartFile(MultipartFile multipartFile) {
        this.multipartFile = multipartFile;
        try {
            this.file = this.multipartFile.getBytes();
            this.fileName = this.multipartFile.getOriginalFilename();
            this.fileContentType = this.multipartFile.getContentType();
            this.fileSize = ((Long) this.multipartFile.getSize()).intValue();
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

java postgresql hibernate jpa autocommit

24
推荐指数
6
解决办法
3万
查看次数