如何在非持久性的域类中设置变量。我希望能够写入和读取该变量,但我不希望它成为表的一部分。
在rails中执行此操作的方法是使用attr_accessor
设置变量。 Grails有可能这样吗?有谁知道怎么做?
谢谢!
答案 0 :(得分:22)
只需将所有瞬态变量的名称添加到transients
列表中,例如
class MyDomain {
static transients = ['nonPersistent', 'nonPersistent2']
Integer nonPersistent
Integer nonPersistent2
Integer persistent
Integer persistent2
}
答案 1 :(得分:1)
定义不应持久保存到数据库的属性名称列表。如果您使用只读辅助方法(" getters")作为辅助方法但是混淆为与持久性相关,这通常很有用。
<强>实施例强>
public class Languge extends Activity
{
Button hindi ,english;
private Locale locale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.languge);
hindi= (Button) findViewById(R.id.hindi);
english= (Button) findViewById(R.id.english);
hindi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale[] locale = Locale.getAvailableLocales();
String[] languages= Resources.getSystem().getAssets().getLocales();
Locale myLocale = new Locale("hi");
setLocale(myLocale);
Intent intent=new Intent(getBaseContext(), MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale[] locale = Locale.getAvailableLocales();
String[] languages= Resources.getSystem().getAssets().getLocales();
Locale myLocale = new Locale("en");
setLocale(myLocale);
Intent intent=new Intent(getBaseContext(), MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
}
public void setLocale(Locale value) {
Locale.setDefault(value);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = value;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
locale = value;
}
答案 2 :(得分:0)
这里我在域类中创建了瞬态变量 -
class Application {
dataType domainFields //define datatypes
static transients = [ 'name']
String getName() {
return 'grails App'
}
}