Spring-处理请求参数中的空值

时间:2018-11-08 19:34:01

标签: java spring null request http-request-parameters

春季(4.3.9):

从客户端作为服务器端发送给服务器的请求参数,当通过request-param获取时,该null对象在请求中被视为字符串null

override fun getItemCount(): Int {

    dataList = FlickrDBOperation.dataArray
    if (dataList!!.isEmpty())
        return 0

    Log.e("count",dataList!!.size.toString())
    return dataList!!.size

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {

    var itemView: View = LayoutInflater.from(parent.context).inflate(R.layout.imagelist_row,parent,false)
    var viewHolder: FlickrAdapter.Holder = FlickrAdapter.Holder(itemView)


    return viewHolder

}

override fun onBindViewHolder(holder: Holder, position: Int) {

    holder.image_name.text = dataList!!.get(position).name
    Picasso.with(context).load(dataList!!.get(position).preUrl).into(holder.row_image)

}


class Holder(itemView: View?) : RecyclerView.ViewHolder(itemView) {

    val row_image: ImageView
    val image_name: TextView
    init {
        row_image  = itemView!!.findViewById<ImageView>(R.id.row_image)
        image_name = itemView!!.findViewById<TextView>(R.id.image_name)
    }

}

至于解决方案,我可以通过客户端处理此问题,并首先避免传递null,因此我无法从中获得明确的解决方案(JavaScript: Formdata append null value - NumberFormatException)。

任何人都可以帮助我解决一下Spring框架中从空对象到字符串null转换的类或方法。

1 个答案:

答案 0 :(得分:1)

无论您为@ReuqestParam提供的默认内容是什么,它将被视为字符串,这就是null被视为"null"字符串的原因。在spring框架中,Converter<S, R>ConverterFactory<S, R>将从String转换为相应的类型。

您可以编写自定义转换器并将其添加到spring注册表here

public class StringToIntegerConverter implements Converter<String, Integer> {

@Override
public Integer convert(String from) {
    // custom logic
   }
}

注册

@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addFormatters(FormatterRegistry registry) {
    registry.addConverter(new StringToIntegerConverter());
       }
 }