我正在使用Java及其框架(Spring 3.1.1)开发Web应用程序.我试图避免尽可能多地使用scriptlet,但是我找不到除此之外的方法来定义数组:
<%
String[] alphabet = {"A", "B", "C", ... , "Z"};
pageContext.setAttribute("alphabet", alphabet);
%>
Run Code Online (Sandbox Code Playgroud)
设置pageContext属性后,我可以使用它${alphabet}.但我想知道,是否可以使用普通的JSTL/EL来创建数组?
更新:我正在使用此数组来创建链接.例如,如果用户单击"S",则会出现名字以"S"开头的员工列表.因此,我不是逐个创建链接而是迭代${alphabet}.
我的应用程序需要不断获得蓝牙设备的RSSI值,以进行一些距离-rssi近似,而无需连接.但是,BluetoothAdapter当设备扫描时,只有一次获取RSSI的回调方法.
// Device scan callback
private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
public void run() {
...
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
作为解决方案,我创建了两个Runnable对象.一个用于启动,另一个用于停止扫描过程.这两个对象连续相互调用,直到得到我想要的RSSI值.之后我Handler将它们从消息队列中删除.
private Runnable startScan = new Runnable() {
@Override
public void run() {
bluetoothAdapter.startLeScan(leScanCallback);
scanHandler.postDelayed(stopScan, SCAN_INTERVAL);
}
};
private Runnable stopScan = new Runnable() {
@Override
public void run() {
bluetoothAdapter.stopLeScan(leScanCallback);
scanHandler.postDelayed(startScan, STOP_INTERVAL);
}
};
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我想知道是否有更多可行的选择,无需连接即可.